@invisi-labs/protocol 1.1.7 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/chunk-7SS2YSEF.js +199 -0
- package/dist/chunk-7SS2YSEF.js.map +1 -0
- package/dist/{chunk-BYJ4LXCJ.js → chunk-HHJLFLVJ.js} +616 -714
- package/dist/chunk-HHJLFLVJ.js.map +1 -0
- package/dist/chunk-MVQQD5W5.js +487 -0
- package/dist/chunk-MVQQD5W5.js.map +1 -0
- package/dist/chunk-Z2XPYNMC.js +446 -0
- package/dist/chunk-Z2XPYNMC.js.map +1 -0
- package/dist/contracts.cjs +615 -713
- package/dist/contracts.cjs.map +1 -1
- package/dist/contracts.d.cts +5 -5
- package/dist/contracts.d.ts +5 -5
- package/dist/contracts.js +1 -1
- package/dist/credit.cjs +3367 -0
- package/dist/credit.cjs.map +1 -0
- package/dist/credit.d.cts +252 -0
- package/dist/credit.d.ts +252 -0
- package/dist/credit.js +53 -0
- package/dist/credit.js.map +1 -0
- package/dist/index.cjs +6054 -6053
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +89 -893
- package/dist/index.d.ts +89 -893
- package/dist/index.js +2956 -3762
- package/dist/index.js.map +1 -1
- package/dist/note.cjs +3456 -0
- package/dist/note.cjs.map +1 -0
- package/dist/note.d.cts +232 -0
- package/dist/note.d.ts +232 -0
- package/dist/note.js +43 -0
- package/dist/note.js.map +1 -0
- package/dist/provenance.cjs +558 -0
- package/dist/provenance.cjs.map +1 -0
- package/dist/provenance.d.cts +188 -0
- package/dist/provenance.d.ts +188 -0
- package/dist/provenance.js +499 -0
- package/dist/provenance.js.map +1 -0
- package/dist/{types-Bvakbfeb.d.cts → types-CUnFzl5S.d.cts} +530 -590
- package/dist/{types-Bvakbfeb.d.ts → types-CUnFzl5S.d.ts} +530 -590
- package/dist/validation-8g0SQVE5.d.ts +235 -0
- package/dist/validation-MgURYiNF.d.cts +235 -0
- package/package.json +20 -5
- package/dist/chunk-BYJ4LXCJ.js.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/authorization/WitnessContext.ts","../src/authorization/common.ts","../src/validation.ts","../src/witness-layouts.json","../src/authorization/credit-cancel.ts","../src/credit/credit-lifecycle.ts","../src/fees/fee.ts","../src/contracts/abis/InvisiProtocol.ts","../src/contracts/abis/InvisiFactory.ts","../src/contracts/abis/InvisiAddressRegistry.ts","../src/credit/credit-create.ts","../src/authorization/credit-creation.ts","../src/authorization/credit-create.ts","../src/authorization/credit-draw.ts","../src/authorization/credit-top-up.ts","../src/authorization/transact.ts","../src/funds/public-inputs.ts","../src/funds/funding.ts","../src/funds/abi-tuples.ts","../src/funds/request.ts","../src/authorization/witness.ts","../src/client/Protocol.ts","../src/funds/aggregate.ts","../src/client/TokenProtocol.ts","../src/funds/calldata.ts","../src/funds/shield.ts","../src/registry/AddressRegistry.ts","../src/registry/RegistrationOperation.ts","../src/registry/registry.ts","../src/verification/verify.ts","../src/factory/factory.ts"],"sourcesContent":["export * from \"./authorization/witness\";\nexport * from \"./client/Protocol\";\nexport * from \"./credit/credit-create\";\nexport * from \"./credit/credit-lifecycle\";\nexport {\n AggregateMemberInput,\n BuildTransactAggregateCalldataParams,\n aggregateMemberRequestHash,\n aggregatePublicInputs,\n buildTransactAggregateCalldata,\n encodeAggregateFundingTypedData,\n} from \"./funds/aggregate\";\nexport { BuildTransactCalldataParams, buildTransactCalldata } from \"./funds/calldata\";\nexport {\n encodeTransactFundingTypedData,\n encodeTransactTypedData,\n transactFundingRequestHash,\n} from \"./funds/funding\";\nexport { transactUserPublicInputs } from \"./funds/public-inputs\";\nexport {\n TRANSACT_CAPACITIES,\n TransactCapacity,\n TransactRequestParams,\n normalizeTransactRequest,\n selectTransactCapacity,\n transactPublicInputs,\n} from \"./funds/request\";\nexport {\n BuildShieldCalldataParams,\n buildShieldCalldata,\n encodeShieldFundingTypedData,\n shieldFundingRequestHash,\n validateShieldRequest,\n} from \"./funds/shield\";\nexport * from \"./interfaces\";\nexport * from \"./registry/AddressRegistry\";\nexport * from \"./registry/registry\";\nexport * from \"./validation\";\nexport * from \"./verification/verify\";\n\nexport * from \"./client/TokenProtocol\";\nexport * from \"./factory/factory\";\nexport * from \"./registry/RegistrationOperation\";\n","import {\n computeCreditCommitment,\n computeCreditSharedKeyHash,\n computeNoteCommitment,\n computeNoteIdentity,\n computeNoteNullifier,\n computeWalletAuthorizationDigest,\n poseidonHash,\n verifyWalletAuthorization,\n type AuthorizedStatement,\n type CreditNote,\n type Note,\n type WalletAuthorizationWitness,\n type WalletOperation,\n} from \"@invisi-labs/core\";\nimport { TokenProtocol } from \"../client/TokenProtocol\";\nimport type { Hex, InputSource } from \"../contracts/index\";\nimport { check } from \"./common\";\nimport type { NoteMembership } from \"./types\";\n/** Shared ownership, authorization and Merkle checks for witness builders. */\nexport class WitnessContext {\n constructor(readonly protocol: TokenProtocol) {}\n context(note: Note | CreditNote): void {\n const c = this.protocol.context;\n check(\n note.chainId === c.chainId &&\n note.protocolAddress === BigInt(c.protocolAddress) &&\n note.tokenAddress === BigInt(c.tokenAddress),\n \"note context mismatch\"\n );\n }\n async authority(\n operation: WalletOperation,\n capacity: number,\n words: readonly Hex[],\n signed: AuthorizedStatement | undefined,\n identity: Hex\n ): Promise<WalletAuthorizationWitness> {\n check(!!signed, \"private wallet authorization required\");\n const c = this.protocol.context,\n request = {\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation,\n capacity,\n words: words.slice(0, -2).map(BigInt),\n };\n check(\n signed.ownerAddress === identity &&\n signed.digest === computeWalletAuthorizationDigest(request),\n \"authorization statement mismatch\"\n );\n const witness = signed.withWitness((value) => value);\n check(\n await verifyWalletAuthorization(\n identity,\n Uint8Array.from([4, ...witness.public_key_x, ...witness.public_key_y]),\n Uint8Array.from(witness.signature),\n request\n ),\n \"invalid wallet authorization\"\n );\n return witness;\n }\n async membership(\n leaf: Hex,\n input: { treeId: bigint; leafIndex: number; path: readonly bigint[] },\n sources: readonly InputSource[]\n ): Promise<number> {\n const source = sources.findIndex((value) => value.treeId === input.treeId);\n check(\n source >= 0 &&\n Number.isInteger(input.leafIndex) &&\n input.leafIndex >= 0 &&\n input.leafIndex < 65536 &&\n input.path.length === 16,\n \"invalid membership position\"\n );\n let root = BigInt(leaf);\n for (let level = 0; level < 16; level++)\n root = BigInt(\n await poseidonHash(\n (input.leafIndex >> level) & 1\n ? [input.path[level]!, root]\n : [root, input.path[level]!]\n )\n );\n check(root === BigInt(sources[source]!.merkleRoot), \"membership root mismatch\");\n return source;\n }\n async noteLeaf(note: Note): Promise<Hex> {\n this.context(note);\n return computeNoteCommitment(\n note.chainId,\n await computeNoteIdentity(BigInt(note.ownerAddress), note.nonce),\n note.tokenAddress,\n note.amount\n );\n }\n async creditLeaf(note: CreditNote): Promise<Hex> {\n this.context(note);\n return computeCreditCommitment(\n note.chainId,\n note.spenderWalletIdentity,\n note.ownerWalletIdentity,\n note.spenderPayout,\n note.ownerPayout,\n note.tokenAddress,\n note.amount,\n note.nonce,\n note.expiry,\n await computeCreditSharedKeyHash(note.creditSharedKey),\n note\n );\n }\n async noteInputs(\n inputs: readonly NoteMembership[],\n sources: readonly InputSource[],\n nullifiers: readonly Hex[],\n identity: Hex,\n authority: WalletAuthorizationWitness\n ) {\n check(inputs.length === nullifiers.length, \"input count mismatch\");\n return Promise.all(\n inputs.map(async (input, i) => {\n check(input.note.ownerAddress === identity, \"input wallet mismatch\");\n const leaf = await this.noteLeaf(input.note);\n check(\n (await computeNoteNullifier(input.note.chainId, input.note.nonce, leaf)) ===\n nullifiers[i],\n \"input nullifier mismatch\"\n );\n return BigInt(await this.membership(leaf, input, sources));\n })\n );\n }\n}\n","import {\n normalizeCreditPolicy,\n type CreditNote,\n type WalletAuthorizationWitness,\n} from \"@invisi-labs/core\";\nimport {\n LocalWitness,\n type CircuitName,\n type ProofStatement,\n type ProofTarget,\n type ProvingRequest,\n} from \"@invisi-labs/prover\";\nimport type { Hex } from \"../contracts/index\";\nimport { FIELD_MODULUS } from \"../validation\";\nimport layouts from \"../witness-layouts.json\";\n\nexport const pad = <T>(values: readonly T[], count: number, zero: () => T): T[] => {\n if (values.length > count) throw new Error(\"witness capacity exceeded\");\n return [...values, ...Array.from({ length: count - values.length }, zero)];\n};\n\nexport const policyWitness = (note: CreditNote, usage = true) => {\n const p = normalizeCreditPolicy(note);\n return {\n single_limit: p.singleLimit,\n daily_limit: p.dailyLimit,\n monthly_limit: p.monthlyLimit,\n ...(usage\n ? {\n last_day: p.lastDay,\n daily_spent: p.dailySpent,\n last_month: p.lastMonth,\n monthly_spent: p.monthlySpent,\n }\n : {}),\n };\n};\n\nexport const zeros = () => Array<bigint>(16).fill(0n);\n\nexport const zeroAuthority = (): WalletAuthorizationWitness => ({\n public_key_x: Array<number>(32).fill(0),\n public_key_y: Array<number>(32).fill(0),\n signature: Array<number>(64).fill(0),\n});\n\nexport function check(ok: boolean, message: string): asserts ok {\n if (!ok) throw new Error(message);\n}\n\nexport function provingRequest(\n circuitName: CircuitName,\n privateInputs: Record<string, unknown>,\n expectedPublicInputs: readonly Hex[],\n target: ProofTarget = \"evm\"\n): ProvingRequest {\n const schema = layouts[circuitName],\n key = schema.keys[target as keyof typeof schema.keys];\n check(typeof key === \"string\", \"unpublished proof target\");\n check(\n expectedPublicInputs.length === schema.publicInputCount,\n \"public input order/width mismatch\"\n );\n check(\n Object.keys(privateInputs).length === schema.private.length &&\n schema.private.every((name) => Object.hasOwn(privateInputs, name)),\n \"private witness schema mismatch\"\n );\n let offset = 0;\n const publicInputs: Record<string, unknown> = {};\n for (const entry of schema.public) {\n const values = expectedPublicInputs.slice(offset, offset + entry.count).map((value) => {\n const n = BigInt(value);\n check(n >= 0n && n < FIELD_MODULUS, \"noncanonical public input\");\n return n;\n });\n publicInputs[entry.name] = entry.array ? values : values[0];\n offset += entry.count;\n }\n check(offset === expectedPublicInputs.length, \"public input layout mismatch\");\n return {\n circuitName,\n target,\n artifactSha256: schema.artifactSha256,\n vkSha256: key,\n expectedPublicInputs: [...expectedPublicInputs],\n witness: new LocalWitness({ ...privateInputs, ...publicInputs }),\n };\n}\nexport function witnessStatement(\n circuitName: CircuitName,\n expectedPublicInputs: readonly Hex[],\n target: ProofTarget = \"evm\"\n): ProofStatement {\n const schema = layouts[circuitName],\n key = schema.keys[target as keyof typeof schema.keys];\n check(\n typeof key === \"string\" && expectedPublicInputs.length === schema.publicInputCount,\n \"unpublished target or statement width mismatch\"\n );\n return {\n circuitName,\n target,\n artifactSha256: schema.artifactSha256,\n vkSha256: key,\n expectedPublicInputs: [...expectedPublicInputs],\n };\n}\n","import { MAX_CIPHERTEXT_BYTES } from \"@invisi-labs/core\";\nimport type { DeploymentContext } from \"@invisi-labs/rpc\";\nimport {\n AbiCoder,\n dataLength,\n getAddress,\n isHexString,\n keccak256,\n ParamType,\n toBeHex,\n} from \"ethers\";\nimport type { Address, Delivery, FundingParams, Hex, InputSource } from \"./contracts/index\";\n\nexport type { DeploymentContext } from \"@invisi-labs/rpc\";\nexport interface TransactionContext extends DeploymentContext {\n tokenAddress: Address;\n now?: bigint;\n /** Explicit chain timestamp used to bind Credit draw UTC periods. */\n timestamp?: bigint;\n}\nexport const FIELD_MODULUS =\n 21888242871839275222246405745257275088548364400416034343698204186575808495617n;\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\" as const;\nexport const ZERO_WORD = toBeHex(0n, 32) as Hex;\nexport const EMPTY_PERMIT = {\n deadline: 0n,\n v: 0,\n r: ZERO_WORD,\n s: ZERO_WORD,\n} as const;\nexport const EMPTY_FUNDING: FundingParams = {\n payer: ZERO_ADDRESS,\n amount: 0n,\n sigNonce: 0n,\n deadline: 0n,\n signature: \"0x\",\n permit: EMPTY_PERMIT,\n};\nexport type FundingInput = Partial<Omit<FundingParams, \"permit\">> & {\n permit?: FundingParams[\"permit\"];\n};\nexport function uint(v: bigint | number | string, bits: number, name = \"value\"): bigint {\n if (\n (typeof v !== \"bigint\" && typeof v !== \"number\" && typeof v !== \"string\") ||\n (typeof v === \"number\" && !Number.isSafeInteger(v))\n )\n throw new Error(`${name} must be an integer`);\n const n = BigInt(v);\n if (n < 0n || n >= 1n << BigInt(bits)) throw new Error(`${name} exceeds u${bits}`);\n return n;\n}\nexport function field(v: bigint | string, name = \"field\"): bigint {\n const n = uint(v, 256, name);\n if (n >= FIELD_MODULUS) throw new Error(`${name} is noncanonical field`);\n return n;\n}\nexport const word = (v: bigint | string): Hex =>\n toBeHex(typeof v === \"bigint\" ? v : BigInt(v), 32) as Hex;\nexport function dense<T>(v: readonly T[], name: string): readonly T[] {\n if (!Array.isArray(v)) throw new Error(`${name} must be array`);\n for (let i = 0; i < v.length; i++)\n if (!Object.hasOwn(v, i) || v[i] === undefined || v[i] === null)\n throw new Error(`${name} has missing or sparse entries`);\n return v;\n}\nexport function known(v: object, keys: readonly string[], name = \"params\") {\n if (\n !v ||\n typeof v !== \"object\" ||\n Array.isArray(v) ||\n Object.keys(v).some((k) => !keys.includes(k))\n )\n throw new Error(`${name} has unsupported fields`);\n}\nexport function notes(v: readonly Hex[], name: string) {\n const r = dense(v, name).map((v) => word(field(v, name)));\n if (r.some((v) => BigInt(v) === 0n) || new Set(r).size !== r.length)\n throw new Error(`duplicate or zero ${name}`);\n return r;\n}\nexport function envelope(v: Hex, length: number, version?: number, maximum = length): Hex {\n if (\n !isHexString(v) ||\n !/^0x(?:[a-fA-F0-9]{2})*$/.test(v) ||\n dataLength(v) < length ||\n dataLength(v) > maximum\n )\n throw new Error(`ciphertext must be ${length} bytes`);\n if (version !== undefined && Number.parseInt(v.slice(2, 4), 16) !== version)\n throw new Error(\"unsupported ciphertext envelope version\");\n return v;\n}\nexport function normalizeContext(c: TransactionContext) {\n return {\n ...c,\n chainId: uint(c.chainId, 64, \"chainId\"),\n protocolAddress: getAddress(c.protocolAddress) as Hex,\n tokenAddress: getAddress(c.tokenAddress) as Hex,\n };\n}\nexport function checkDeadline(c: TransactionContext, value: bigint) {\n const n = uint(value, 64, \"deadline\");\n if (c.now !== undefined && n < uint(c.now, 64, \"now\")) throw new Error(\"deadline has expired\");\n return n;\n}\nexport function normalizeSources(\n sources: readonly InputSource[],\n inputCount: number,\n capacity: number\n) {\n dense(sources, \"sources\");\n if (\n inputCount < 0 ||\n inputCount > capacity ||\n sources.length > inputCount ||\n (inputCount === 0 ? sources.length !== 0 : sources.length === 0)\n )\n throw new Error(\"source count must be 1..inputCount, or empty for zero inputs\");\n let previous = 0n;\n return sources.map((s) => {\n known(s, [\"treeId\", \"merkleRoot\"], \"source\");\n const treeId = uint(s.treeId, 64, \"treeId\"),\n merkleRoot = word(field(s.merkleRoot, \"merkleRoot\"));\n if (treeId === 0n || treeId <= previous || BigInt(merkleRoot) === 0n)\n throw new Error(\"sources must have positive roots and strictly ascending tree IDs\");\n previous = treeId;\n return { treeId, merkleRoot };\n });\n}\nexport const pad = (v: readonly bigint[], n: number): bigint[] => [\n ...v,\n ...(Array(n - v.length).fill(0n) as bigint[]),\n];\n/** Receipt/transport validation must not reject unrelated future wallet codecs. */\nexport function normalizeOpaqueDelivery(\n value: Delivery,\n options: { empty?: boolean; allowEmpty?: boolean } = {}\n): Delivery {\n known(value, [\"ciphertext\", \"clue\"], \"delivery\");\n if (options.empty) {\n if (value.ciphertext !== \"0x\" || value.clue !== \"0x\")\n throw new Error(\"absent output requires an empty delivery\");\n return { ciphertext: \"0x\", clue: \"0x\" };\n }\n if (options.allowEmpty && value.ciphertext === \"0x\" && value.clue === \"0x\")\n return { ciphertext: \"0x\", clue: \"0x\" };\n const ciphertext = envelope(value.ciphertext, 1, undefined, MAX_CIPHERTEXT_BYTES);\n const clue = envelope(value.clue, 68);\n if (clue.slice(130, 132).toLowerCase() !== \"18\") throw new Error(\"clue precision must be 24\");\n return { ciphertext, clue };\n}\n\nexport const deliveriesHash = (v: readonly Delivery[]) =>\n keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\n {\n type: \"tuple[]\",\n components: [\n { name: \"ciphertext\", type: \"bytes\" },\n { name: \"clue\", type: \"bytes\" },\n ],\n },\n ].map((parameter) => ParamType.from(parameter)),\n [dense(v, \"deliveries\")]\n ) as Hex\n ) as Hex;\nexport function normalizeFunding(input: FundingInput = {}): FundingParams {\n const f = { ...EMPTY_FUNDING, ...input };\n getAddress(f.payer) as Hex;\n uint(f.amount, 128, \"depositAmount\");\n uint(f.sigNonce, 256, \"sigNonce\");\n uint(f.deadline, 256, \"funding deadline\");\n if (!isHexString(f.signature) || !/^0x(?:[a-fA-F0-9]{2})*$/.test(f.signature))\n throw new Error(\"invalid signature bytes\");\n const p = f.permit;\n uint(p.deadline, 256);\n uint(p.v, 8);\n for (const v of [p.r, p.s])\n if (!isHexString(v) || dataLength(v) !== 32) throw new Error(\"permit r/s must be bytes32\");\n if ((f.amount === 0n) !== (BigInt(f.payer) === 0n))\n throw new Error(\"deposit amount and payer must both be zero or positive\");\n if (\n f.amount === 0n &&\n (f.sigNonce !== 0n ||\n f.deadline !== 0n ||\n f.signature !== \"0x\" ||\n p.deadline !== 0n ||\n p.v !== 0 ||\n BigInt(p.r) !== 0n ||\n BigInt(p.s) !== 0n)\n )\n throw new Error(\"zero funding must be entirely empty\");\n return { ...f, payer: getAddress(f.payer) as Hex };\n}\nexport function validateFundingSubmission(f: FundingParams, caller?: Address, now?: bigint) {\n if (f.signature !== \"0x\" && now !== undefined && uint(now, 64, \"now\") > f.deadline)\n throw new Error(\"funding authorization has expired\");\n if (\n f.signature === \"0x\" &&\n (f.sigNonce !== 0n ||\n f.deadline !== 0n ||\n (caller !== undefined && f.amount > 0n && (getAddress(caller) as Hex) !== f.payer))\n )\n throw new Error(\"direct funding requires payer caller and zero nonce/deadline\");\n}\nexport const getEIP712Domain = (c: TransactionContext) => ({\n name: \"InvisibleProtocol\",\n version: \"1\",\n chainId: uint(c.chainId, 64),\n verifyingContract: getAddress(c.protocolAddress) as Hex,\n});\nexport const fundingFields = [\n { name: \"requestHash\", type: \"bytes32\" },\n { name: \"payer\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"sigNonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n] as const;\n","{\n \"transact_user_slots14\": {\n \"artifactSha256\": \"df9458f0be9c8905241ee74e5f11c0e1c348ef749fe1a9d599034a983f08dbd5\",\n \"keys\": {\n \"evm\": \"a9db580b09d05f09d4ea58b8d9755855525b8cc20beee4b1fbfe4cad10251e4e\",\n \"noir-recursive\": \"912191fc9484b2c0ab869d44900054b1a7c25c3256177abfc102884f3fa7d7ed\"\n },\n \"publicInputCount\": 59,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"output_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_tree_ids\",\n \"count\": 14,\n \"array\": true\n },\n {\n \"name\": \"merkle_roots\",\n \"count\": 14,\n \"array\": true\n },\n {\n \"name\": \"slot_values\",\n \"count\": 14,\n \"array\": true\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_payer\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_recipient\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"input_owner_address\",\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"output_identities\",\n \"amounts\",\n \"nonces\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\"\n ]\n },\n \"transact_user_slots56\": {\n \"artifactSha256\": \"370299e1ee32a57b6a81ccdbf5e95efef144bee17d38d402bbbfbaa392d355d8\",\n \"keys\": {\n \"evm\": \"2bb2fdf9ef33200038aa6e0a9f35e2a7252bf3946f5b5d68dd0ae85172adeddf\"\n },\n \"publicInputCount\": 185,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"output_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_tree_ids\",\n \"count\": 56,\n \"array\": true\n },\n {\n \"name\": \"merkle_roots\",\n \"count\": 56,\n \"array\": true\n },\n {\n \"name\": \"slot_values\",\n \"count\": 56,\n \"array\": true\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_payer\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_recipient\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"input_owner_address\",\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"output_identities\",\n \"amounts\",\n \"nonces\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\"\n ]\n },\n \"transact_user_slots112\": {\n \"artifactSha256\": \"259417390705f5ced1cbd671582a2fe40dbf7a259d8717f4e90989dc4368ad91\",\n \"keys\": {\n \"evm\": \"523652b9391818c0af0af8668ba2cd786be25ef00e6bcafa662ed829a32746a7\"\n },\n \"publicInputCount\": 353,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"output_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_tree_ids\",\n \"count\": 112,\n \"array\": true\n },\n {\n \"name\": \"merkle_roots\",\n \"count\": 112,\n \"array\": true\n },\n {\n \"name\": \"slot_values\",\n \"count\": 112,\n \"array\": true\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_payer\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_recipient\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"input_owner_address\",\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"output_identities\",\n \"amounts\",\n \"nonces\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\"\n ]\n },\n \"transact_user_slots168\": {\n \"artifactSha256\": \"2a86703ca068c50f305d3b4b856ab3b2145d066da0bab894eac8e7c174c20292\",\n \"keys\": {\n \"evm\": \"c9d821fdd5b8cfcdc7fe93e673a8c99487879a4680c8f1b86c0b5c05a3cad515\"\n },\n \"publicInputCount\": 521,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"output_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_tree_ids\",\n \"count\": 168,\n \"array\": true\n },\n {\n \"name\": \"merkle_roots\",\n \"count\": 168,\n \"array\": true\n },\n {\n \"name\": \"slot_values\",\n \"count\": 168,\n \"array\": true\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"withdrawal_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_payer\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_recipient\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"input_owner_address\",\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"output_identities\",\n \"amounts\",\n \"nonces\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\"\n ]\n },\n \"transact_aggregate_14_4\": {\n \"artifactSha256\": \"4cd3f3d0dbcac9a48fec728450fd73a247321f655da02bd08db789e07b47527b\",\n \"keys\": {\n \"evm\": \"6654b125cb96d5f4dd263c82cb34b0862bf63ff761fe5feab834f10283a0265d\"\n },\n \"publicInputCount\": 237,\n \"public\": [\n {\n \"name\": \"statements\",\n \"count\": 4,\n \"array\": true\n },\n {\n \"name\": \"inner_vk_commitment\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"verification_key\",\n \"key_hash\",\n \"proofs\"\n ]\n },\n \"transact_aggregate_14_8\": {\n \"artifactSha256\": \"b36ff5370043782364d41dbe00443970292b0240429f241c974ae6c9b10debfe\",\n \"keys\": {\n \"evm\": \"2ad5b8b24109edf24197e97fbad35519d7d18558df19183ca3f91c4089ce4421\"\n },\n \"publicInputCount\": 473,\n \"public\": [\n {\n \"name\": \"statements\",\n \"count\": 8,\n \"array\": true\n },\n {\n \"name\": \"inner_vk_commitment\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"verification_key\",\n \"key_hash\",\n \"proofs\"\n ]\n },\n \"transact_aggregate_14_12\": {\n \"artifactSha256\": \"1191a92a333d826d4c4bd6a2e701a7751beb609904f8b928e3816f276d6fda67\",\n \"keys\": {\n \"evm\": \"a8b06d969e97f53624fae05d08aa548182ad09db24fe60159fae61d243c0cb9d\"\n },\n \"publicInputCount\": 709,\n \"public\": [\n {\n \"name\": \"statements\",\n \"count\": 12,\n \"array\": true\n },\n {\n \"name\": \"inner_vk_commitment\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"verification_key\",\n \"key_hash\",\n \"proofs\"\n ]\n },\n \"create_credit\": {\n \"artifactSha256\": \"16a41fd585d5f925e4e93fd6a308e1ca8c90ea287778871cb0d214f0d0e223ce\",\n \"keys\": {\n \"evm\": \"e8d3dc1f6922dbe1a0aa6016e65664be28d7005180ee943a4b237ac5518971bb\"\n },\n \"publicInputCount\": 48,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"owner_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"actual_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_tree_ids\",\n \"count\": 10,\n \"array\": true\n },\n {\n \"name\": \"merkle_roots\",\n \"count\": 10,\n \"array\": true\n },\n {\n \"name\": \"nullifiers\",\n \"count\": 10,\n \"array\": true\n },\n {\n \"name\": \"credit_commitment\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"change_commitment\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"expiry\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_payer\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_recipient\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"input_amounts\",\n \"input_nonces\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\",\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"spender_payout\",\n \"spender_wallet_identity\",\n \"owner_wallet_identity\",\n \"credit_amount\",\n \"credit_nonce\",\n \"credit_shared_key\",\n \"single_limit\",\n \"daily_limit\",\n \"monthly_limit\",\n \"change_amount\",\n \"change_nonce\"\n ]\n },\n \"credit_draw_slots1\": {\n \"artifactSha256\": \"4542b227e0552b45c302f1dace21cadeba4962c96244e021472f1f7531cff8d1\",\n \"keys\": {\n \"evm\": \"43c051a2bedf9454c12e70b10156361e414944823ba23e80662c16c7ced0a2ce\"\n },\n \"publicInputCount\": 20,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"spender_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"actual_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"tree_ids\",\n \"count\": 1,\n \"array\": true\n },\n {\n \"name\": \"roots\",\n \"count\": 1,\n \"array\": true\n },\n {\n \"name\": \"nullifiers\",\n \"count\": 1,\n \"array\": true\n },\n {\n \"name\": \"remainder_commitments\",\n \"count\": 1,\n \"array\": true\n },\n {\n \"name\": \"expiries\",\n \"count\": 1,\n \"array\": true\n },\n {\n \"name\": \"total_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"recovery_amounts\",\n \"count\": 1,\n \"array\": true\n },\n {\n \"name\": \"current_day\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"current_month\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"spender_wallet_identity\",\n \"owner_payouts\",\n \"owner_wallet_identities\",\n \"input_amounts\",\n \"input_nonces\",\n \"credit_shared_keys\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\",\n \"draw_amounts\",\n \"single_limits\",\n \"daily_limits\",\n \"monthly_limits\",\n \"last_days\",\n \"daily_spents\",\n \"last_months\",\n \"monthly_spents\"\n ]\n },\n \"credit_draw_slots12\": {\n \"artifactSha256\": \"dd72b0867fc3be7cd90de263bd2d0892075cb18eb4f6dd671b13111710f10369\",\n \"keys\": {\n \"evm\": \"5e31d771e6294993736078596d9c69f21fe7595eda50e3cce6d7406b65cf1443\"\n },\n \"publicInputCount\": 86,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"spender_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"actual_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"tree_ids\",\n \"count\": 12,\n \"array\": true\n },\n {\n \"name\": \"roots\",\n \"count\": 12,\n \"array\": true\n },\n {\n \"name\": \"nullifiers\",\n \"count\": 12,\n \"array\": true\n },\n {\n \"name\": \"remainder_commitments\",\n \"count\": 12,\n \"array\": true\n },\n {\n \"name\": \"expiries\",\n \"count\": 12,\n \"array\": true\n },\n {\n \"name\": \"total_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"recovery_amounts\",\n \"count\": 12,\n \"array\": true\n },\n {\n \"name\": \"current_day\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"current_month\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"spender_wallet_identity\",\n \"owner_payouts\",\n \"owner_wallet_identities\",\n \"input_amounts\",\n \"input_nonces\",\n \"credit_shared_keys\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\",\n \"draw_amounts\",\n \"single_limits\",\n \"daily_limits\",\n \"monthly_limits\",\n \"last_days\",\n \"daily_spents\",\n \"last_months\",\n \"monthly_spents\"\n ]\n },\n \"credit_draw_slots50\": {\n \"artifactSha256\": \"09c7469866748b4c0c4bbf2b040844771948a170999f6dc7a38fe5c0ecda4054\",\n \"keys\": {\n \"evm\": \"7b613225b6f32a077011d4196c356e836d22dcd116efe687fde53144fbd8db9f\"\n },\n \"publicInputCount\": 314,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"spender_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"actual_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"tree_ids\",\n \"count\": 50,\n \"array\": true\n },\n {\n \"name\": \"roots\",\n \"count\": 50,\n \"array\": true\n },\n {\n \"name\": \"nullifiers\",\n \"count\": 50,\n \"array\": true\n },\n {\n \"name\": \"remainder_commitments\",\n \"count\": 50,\n \"array\": true\n },\n {\n \"name\": \"expiries\",\n \"count\": 50,\n \"array\": true\n },\n {\n \"name\": \"total_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"recovery_amounts\",\n \"count\": 50,\n \"array\": true\n },\n {\n \"name\": \"current_day\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"current_month\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"spender_wallet_identity\",\n \"owner_payouts\",\n \"owner_wallet_identities\",\n \"input_amounts\",\n \"input_nonces\",\n \"credit_shared_keys\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\",\n \"draw_amounts\",\n \"single_limits\",\n \"daily_limits\",\n \"monthly_limits\",\n \"last_days\",\n \"daily_spents\",\n \"last_months\",\n \"monthly_spents\"\n ]\n },\n \"credit_draw_slots120\": {\n \"artifactSha256\": \"6ccd0366a669c50fd5da875c3eae194fe8aa4c36d35a5f9ebfd64636ea599b48\",\n \"keys\": {\n \"evm\": \"d715848afc5c1ecdfcef5ed5026865abef5040a3bc232fd65330a5ffee8475fb\"\n },\n \"publicInputCount\": 734,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"spender_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"actual_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"tree_ids\",\n \"count\": 120,\n \"array\": true\n },\n {\n \"name\": \"roots\",\n \"count\": 120,\n \"array\": true\n },\n {\n \"name\": \"nullifiers\",\n \"count\": 120,\n \"array\": true\n },\n {\n \"name\": \"remainder_commitments\",\n \"count\": 120,\n \"array\": true\n },\n {\n \"name\": \"expiries\",\n \"count\": 120,\n \"array\": true\n },\n {\n \"name\": \"total_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"recovery_amounts\",\n \"count\": 120,\n \"array\": true\n },\n {\n \"name\": \"current_day\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"current_month\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"spender_wallet_identity\",\n \"owner_payouts\",\n \"owner_wallet_identities\",\n \"input_amounts\",\n \"input_nonces\",\n \"credit_shared_keys\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\",\n \"draw_amounts\",\n \"single_limits\",\n \"daily_limits\",\n \"monthly_limits\",\n \"last_days\",\n \"daily_spents\",\n \"last_months\",\n \"monthly_spents\"\n ]\n },\n \"credit_cancel\": {\n \"artifactSha256\": \"6485609280fe5a3d44ca9f1865b29b44253b3d2cd49770d000e7bb7a3db8e65d\",\n \"keys\": {\n \"evm\": \"d74cf842d204cdf271c06a69482ddff11568e89630346b634d486205bec4bd9e\"\n },\n \"publicInputCount\": 13,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"owner_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"tree_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"merkle_root\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"nullifier\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_recipient\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"spender_payout\",\n \"spender_wallet_identity\",\n \"owner_wallet_identity\",\n \"input_nonce\",\n \"expiry\",\n \"credit_shared_key\",\n \"single_limit\",\n \"daily_limit\",\n \"monthly_limit\",\n \"last_day\",\n \"daily_spent\",\n \"last_month\",\n \"monthly_spent\",\n \"leaf_index\",\n \"merkle_path\"\n ]\n },\n \"credit_top_up\": {\n \"artifactSha256\": \"3004eea1c26ec8e33f8fc9ee171a3b6af250682efb607f7003ae58f8327998ab\",\n \"keys\": {\n \"evm\": \"b7f378a871a27649c3f7fd1af554c8f87d99bcf0780b21972e910212ed4e5a0d\"\n },\n \"publicInputCount\": 52,\n \"public\": [\n {\n \"name\": \"chain_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"protocol_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"token_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"owner_address\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"actual_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"source_count\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"input_tree_ids\",\n \"count\": 10,\n \"array\": true\n },\n {\n \"name\": \"merkle_roots\",\n \"count\": 10,\n \"array\": true\n },\n {\n \"name\": \"nullifiers\",\n \"count\": 10,\n \"array\": true\n },\n {\n \"name\": \"credit_commitment\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"change_commitment\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"delivery_hash_low\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"expiry\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deadline\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"deposit_payer\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_recipient\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"fee_amount\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"credit_tree_id\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"credit_merkle_root\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"credit_nullifier\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"previous_expiry\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_high\",\n \"count\": 1,\n \"array\": false\n },\n {\n \"name\": \"auth_digest_low\",\n \"count\": 1,\n \"array\": false\n }\n ],\n \"private\": [\n \"input_amounts\",\n \"input_nonces\",\n \"leaf_indices\",\n \"merkle_paths\",\n \"input_source_indices\",\n \"public_key_x\",\n \"public_key_y\",\n \"signature\",\n \"spender_payout\",\n \"spender_wallet_identity\",\n \"owner_wallet_identity\",\n \"credit_amount\",\n \"credit_nonce\",\n \"credit_shared_key\",\n \"single_limit\",\n \"daily_limit\",\n \"monthly_limit\",\n \"previous_single_limit\",\n \"previous_daily_limit\",\n \"previous_monthly_limit\",\n \"last_day\",\n \"daily_spent\",\n \"last_month\",\n \"monthly_spent\",\n \"change_amount\",\n \"change_nonce\",\n \"previous_credit_amount\",\n \"previous_credit_nonce\",\n \"previous_credit_leaf_index\",\n \"previous_credit_merkle_path\"\n ]\n }\n}\n","import { computeCreditNullifier, normalizeCreditDeliveryState } from \"@invisi-labs/core\";\nimport { type ProvingRequest } from \"@invisi-labs/prover\";\nimport { cancelCreditPublicInputs } from \"../credit/credit-lifecycle\";\nimport { check, policyWitness, provingRequest } from \"./common\";\nimport type { CancelCreditWitnessParams } from \"./types\";\nimport { WitnessContext } from \"./WitnessContext\";\nexport async function cancelCredit(\n witness: WitnessContext,\n p: CancelCreditWitnessParams\n): Promise<ProvingRequest> {\n const note = normalizeCreditDeliveryState(p.input.state).note,\n leaf = await witness.creditLeaf(note),\n c = witness.protocol.context;\n check(\n (await computeCreditNullifier(c.chainId, note.creditSharedKey, leaf)) ===\n p.params.nullifier &&\n note.amount === p.params.amount &&\n note.ownerPayout === BigInt(p.params.owner),\n \"Credit cancellation mismatch\"\n );\n await witness.membership(leaf, p.input, [p.params.source]);\n const words = cancelCreditPublicInputs(c, p.params),\n authority = await witness.authority(\n \"cancel-credit\",\n 1,\n words,\n p.authorization,\n note.ownerWalletIdentity\n );\n return provingRequest(\n \"credit_cancel\",\n {\n ...authority,\n spender_payout: note.spenderPayout,\n spender_wallet_identity: BigInt(note.spenderWalletIdentity),\n owner_wallet_identity: BigInt(note.ownerWalletIdentity),\n ...policyWitness(note),\n input_nonce: note.nonce,\n expiry: note.expiry,\n credit_shared_key: note.creditSharedKey,\n leaf_index: BigInt(p.input.leafIndex),\n merkle_path: [...p.input.path],\n },\n words\n );\n}\n","import { AbiCoder, getAddress, Interface, keccak256, ParamType } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport { normalizeFee } from \"../fees/fee\";\n\nimport {\n computeWalletAuthorizationDigest,\n creditPeriods,\n walletAuthorizationTypedData,\n type WalletOperation,\n} from \"@invisi-labs/core\";\nimport {\n invisiProtocolAbi,\n type CancelCreditParams,\n type CreditDrawParams,\n type Delivery,\n type TopUpCreditParams,\n} from \"../contracts/index\";\nimport {\n checkDeadline,\n deliveriesHash,\n dense,\n field,\n fundingFields,\n getEIP712Domain,\n known,\n normalizeContext,\n normalizeOpaqueDelivery,\n normalizeSources,\n notes,\n pad,\n uint,\n validateFundingSubmission,\n word,\n ZERO_ADDRESS,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nimport {\n createCreditBaseInputs,\n encodeCreditProof,\n validateCreateCreditRequest,\n} from \"./credit-create\";\nexport const CREDIT_DRAW_CAPACITIES = [1, 12, 50, 120] as const;\nexport function selectCreditDrawCircuit(count: number) {\n if (!Number.isInteger(count) || count < 1 || count > 120)\n throw new Error(\"draw requires 1..120 credits\");\n const maxSize = CREDIT_DRAW_CAPACITIES.find((n) => count <= n)!;\n return {\n name: `credit_draw_slots${maxSize}`,\n maxSize,\n publicInputCount: 6 * maxSize + 14,\n totalBits: 126 + Math.ceil(Math.log2(maxSize)),\n };\n}\nexport function validateCreditDrawRequest(\n c: TransactionContext,\n p: CreditDrawParams,\n cs: readonly Delivery[]\n) {\n known(p, [\n \"token\",\n \"sources\",\n \"nullifiers\",\n \"remainderCommitments\",\n \"expiries\",\n \"recoveryAmounts\",\n \"spender\",\n \"totalAmount\",\n \"deadline\",\n ]);\n if ((getAddress(p.token) as Hex) !== (getAddress(c.tokenAddress) as Hex))\n throw new Error(\"request token mismatch\");\n const ctx = normalizeContext(c),\n ns = notes(p.nullifiers, \"nullifiers\"),\n profile = selectCreditDrawCircuit(ns.length),\n sources = normalizeSources(p.sources, ns.length, profile.maxSize);\n for (const [key, v] of Object.entries({\n remainderCommitments: p.remainderCommitments,\n expiries: p.expiries,\n recoveryAmounts: p.recoveryAmounts,\n }))\n if (dense<unknown>(v, key).length !== ns.length) throw new Error(`${key} count mismatch`);\n const remainderCommitments = p.remainderCommitments.map((v) => word(field(v))),\n recoveryAmounts = p.recoveryAmounts.map((v) => word(field(v))),\n expiries = p.expiries.map((v) => uint(v, 64, \"expiry\")),\n positives = remainderCommitments.filter((v) => BigInt(v) !== 0n);\n if (new Set(positives).size !== positives.length)\n throw new Error(\"duplicate remainder commitment\");\n for (let i = 0; i < ns.length; i++) {\n if (expiries[i] === 0n || (c.now !== undefined && expiries[i]! <= c.now))\n throw new Error(\"expiry must be future\");\n if (BigInt(remainderCommitments[i]!) === 0n && BigInt(recoveryAmounts[i]!) !== 0n)\n throw new Error(\"full draw requires zero recovery amount\");\n }\n const spender = getAddress(p.spender) as Hex,\n totalAmount = uint(p.totalAmount, profile.totalBits, \"totalAmount\");\n if (BigInt(spender) === 0n || totalAmount === 0n)\n throw new Error(\"spender and total amount must be positive\");\n if (dense(cs, \"deliveries\").length !== 2 * ns.length)\n throw new Error(\"deliveries count mismatch\");\n const deliveries = cs.map((v, i) =>\n BigInt(remainderCommitments[Math.floor(i / 2)]!) === 0n\n ? normalizeOpaqueDelivery(v, { empty: true })\n : normalizeOpaqueDelivery(v, {})\n );\n return {\n ...ctx,\n sources,\n nullifiers: ns,\n remainderCommitments,\n recoveryAmounts,\n expiries,\n spender,\n totalAmount,\n deadline: checkDeadline(c, p.deadline),\n deliveries,\n profile,\n periods: creditPeriods(c.timestamp!),\n };\n}\nexport function creditDrawBaseInputs(\n c: TransactionContext,\n p: CreditDrawParams,\n cs: readonly Delivery[]\n) {\n const r = validateCreditDrawRequest(c, p, cs),\n n = r.profile.maxSize,\n h = BigInt(deliveriesHash(cs));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.spender),\n BigInt(r.nullifiers.length),\n BigInt(r.sources.length),\n ...pad(\n r.sources.map((s) => s.treeId),\n n\n ),\n ...pad(\n r.sources.map((s) => BigInt(s.merkleRoot)),\n n\n ),\n ...pad(r.nullifiers.map(BigInt), n),\n ...pad(r.remainderCommitments.map(BigInt), n),\n ...pad(r.expiries, n),\n r.totalAmount,\n r.deadline,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n ...pad(r.recoveryAmounts.map(BigInt), n),\n r.periods.currentDay,\n r.periods.currentMonth,\n ].map(word);\n}\nexport function validateCancelCreditRequest(c: TransactionContext, p: CancelCreditParams) {\n known(p, [\n \"token\",\n \"source\",\n \"nullifier\",\n \"owner\",\n \"amount\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n ]);\n if ((getAddress(p.token) as Hex) !== (getAddress(c.tokenAddress) as Hex))\n throw new Error(\"request token mismatch\");\n const ctx = normalizeContext(c),\n source = normalizeSources([p.source], 1, 1)[0]!,\n nullifier = notes([p.nullifier], \"nullifier\")[0]!,\n owner = getAddress(p.owner) as Hex,\n amount = uint(p.amount, 126, \"amount\");\n if (BigInt(owner) === 0n || amount === 0n) throw new Error(\"owner and amount must be positive\");\n const fee = normalizeFee(p);\n if (fee.feeAmount >= amount) throw new Error(\"fee must leave a positive owner refund\");\n return {\n ...ctx,\n ...fee,\n source,\n nullifier,\n owner,\n amount,\n deadline: checkDeadline(c, p.deadline),\n };\n}\nexport function cancelCreditBaseInputs(c: TransactionContext, p: CancelCreditParams) {\n const r = validateCancelCreditRequest(c, p);\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.owner),\n r.source.treeId,\n BigInt(r.source.merkleRoot),\n BigInt(r.nullifier),\n r.amount,\n r.deadline,\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function validateTopUpCreditRequest(\n c: TransactionContext,\n p: TopUpCreditParams,\n cs: readonly Delivery[],\n funding: FundingInput = {}\n) {\n known(p, [\"token\", \"creation\", \"creditSource\", \"creditNullifier\", \"previousExpiry\"]);\n const creation = validateCreateCreditRequest(c, p.creation, cs, funding),\n creditSource = normalizeSources([p.creditSource], 1, 1)[0]!,\n creditNullifier = notes([p.creditNullifier], \"creditNullifier\")[0]!,\n previousExpiry = uint(p.previousExpiry, 64, \"previousExpiry\");\n if (previousExpiry === 0n || (c.now !== undefined && previousExpiry <= c.now))\n throw new Error(\"previous Credit has expired\");\n if (creation.expiry < previousExpiry) throw new Error(\"expiry must not decrease\");\n if (creation.nullifiers.includes(creditNullifier))\n throw new Error(\"duplicate credit and ordinary nullifier\");\n return { creation, creditSource, creditNullifier, previousExpiry };\n}\nexport function topUpCreditBaseInputs(\n c: TransactionContext,\n p: TopUpCreditParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = validateTopUpCreditRequest(c, p, cs, f);\n return [\n ...createCreditBaseInputs(c, p.creation, cs, f),\n word(r.creditSource.treeId),\n r.creditSource.merkleRoot,\n r.creditNullifier,\n word(r.previousExpiry),\n ];\n}\nconst cancelTuple = [\n \"(address token,(uint256 treeId,bytes32 merkleRoot) source,bytes32 nullifier,address owner,uint256 amount,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n][0]!;\nconst topTuple = [\n \"((address token,(uint256 treeId,bytes32 merkleRoot)[] sources,bytes32[] nullifiers,bytes32 creditCommitment,bytes32 changeCommitment,address owner,uint256 expiry,uint256 deadline,address feeRecipient,uint256 feeAmount) creation,(uint256 treeId,bytes32 merkleRoot) creditSource,bytes32 creditNullifier,uint256 previousExpiry)\",\n][0]!;\nconst hashContext = {\n chainId: 0n,\n protocolAddress: ZERO_ADDRESS,\n tokenAddress: ZERO_ADDRESS,\n};\nexport function cancelCreditRequestHash(p: CancelCreditParams) {\n validateCancelCreditRequest({ ...hashContext, tokenAddress: p.token }, p);\n return keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [{ type: \"bytes32\" }, cancelTuple].map((parameter) => ParamType.from(parameter)),\n [\n keccak256(new TextEncoder().encode(\"InvisiCancelCredit\")),\n { ...p, ...normalizeFee(p) },\n ]\n ) as Hex\n ) as Hex;\n}\nexport function topUpCreditRequestHash(\n p: TopUpCreditParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = validateTopUpCreditRequest(\n { ...hashContext, tokenAddress: p.creation.token },\n p,\n cs,\n f\n );\n return keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\n { type: \"bytes32\" },\n topTuple,\n { type: \"bytes32\" },\n { type: \"address\" },\n { type: \"uint256\" },\n ].map((parameter) => ParamType.from(parameter)),\n [\n keccak256(new TextEncoder().encode(\"InvisiTopUpCredit\")),\n { ...p, creation: { ...p.creation, ...normalizeFee(p.creation) } },\n deliveriesHash(cs),\n r.creation.funding.payer,\n r.creation.funding.amount,\n ]\n ) as Hex\n ) as Hex;\n}\nfunction authorize(\n c: TransactionContext,\n operation: WalletOperation,\n capacity: number,\n words: readonly Hex[]\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation,\n capacity,\n words: words.map(BigInt),\n });\n}\nfunction appendDigest(\n c: TransactionContext,\n operation: WalletOperation,\n capacity: number,\n words: readonly Hex[]\n) {\n const digest = BigInt(\n computeWalletAuthorizationDigest({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation,\n capacity,\n words: words.map(BigInt),\n })\n );\n return [...words, word(digest >> 128n), word(digest & ((1n << 128n) - 1n))];\n}\nexport function encodeCancelCreditTypedData(c: TransactionContext, p: CancelCreditParams) {\n return authorize(c, \"cancel-credit\", 1, cancelCreditBaseInputs(c, p));\n}\nexport function encodeTopUpCreditTypedData(\n c: TransactionContext,\n p: TopUpCreditParams,\n deliveries: readonly Delivery[],\n funding: FundingInput = {}\n) {\n return authorize(c, \"top-up-credit\", 10, topUpCreditBaseInputs(c, p, deliveries, funding));\n}\nexport function encodeCreditDrawTypedData(\n c: TransactionContext,\n p: CreditDrawParams,\n deliveries: readonly Delivery[]\n) {\n return authorize(\n c,\n \"credit-draw\",\n selectCreditDrawCircuit(p.nullifiers.length).maxSize,\n creditDrawBaseInputs(c, p, deliveries)\n );\n}\nexport function creditDrawPublicInputs(\n c: TransactionContext,\n p: CreditDrawParams,\n deliveries: readonly Delivery[]\n) {\n return appendDigest(\n c,\n \"credit-draw\",\n selectCreditDrawCircuit(p.nullifiers.length).maxSize,\n creditDrawBaseInputs(c, p, deliveries)\n );\n}\nexport function cancelCreditPublicInputs(c: TransactionContext, p: CancelCreditParams) {\n return appendDigest(c, \"cancel-credit\", 1, cancelCreditBaseInputs(c, p));\n}\nexport function topUpCreditPublicInputs(\n c: TransactionContext,\n p: TopUpCreditParams,\n deliveries: readonly Delivery[],\n funding: FundingInput = {}\n) {\n return appendDigest(c, \"top-up-credit\", 10, topUpCreditBaseInputs(c, p, deliveries, funding));\n}\nexport function encodeTopUpCreditFundingTypedData(\n c: TransactionContext,\n p: TopUpCreditParams,\n cs: readonly Delivery[],\n f: FundingInput\n) {\n const r = validateTopUpCreditRequest(c, p, cs, f),\n funding = r.creation.funding;\n if (funding.amount === 0n) throw new Error(\"funding authorization requires positive deposit\");\n return {\n domain: getEIP712Domain(c),\n primaryType: \"FundTransact\" as const,\n types: { FundTransact: fundingFields },\n message: {\n requestHash: topUpCreditRequestHash(p, cs, f),\n payer: funding.payer,\n amount: funding.amount,\n sigNonce: funding.sigNonce,\n deadline: funding.deadline,\n },\n };\n}\nexport interface BuildCreditDrawCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: CreditDrawParams;\n deliveries: readonly Delivery[];\n}\nexport function buildCreditDrawCalldata(p: BuildCreditDrawCalldataParams) {\n validateCreditDrawRequest(p.context, p.params, p.deliveries);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"creditDraw\", [\n encodeCreditProof(p.proof),\n p.params,\n p.deliveries,\n ]) as Hex,\n nullifiers: p.params.nullifiers,\n totalAmount: p.params.totalAmount,\n };\n}\nexport interface BuildCancelCreditCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: CancelCreditParams;\n}\nexport function buildCancelCreditCalldata(p: BuildCancelCreditCalldataParams) {\n validateCancelCreditRequest(p.context, p.params);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"cancelCredit\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n ]) as Hex,\n };\n}\nexport interface BuildTopUpCreditCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: TopUpCreditParams;\n deliveries: readonly Delivery[];\n funding?: FundingInput;\n caller?: Address;\n}\nexport function buildTopUpCreditCalldata(p: BuildTopUpCreditCalldataParams) {\n const r = validateTopUpCreditRequest(p.context, p.params, p.deliveries, p.funding);\n validateFundingSubmission(r.creation.funding, p.caller, p.context.now);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"topUpCredit\", [\n encodeCreditProof(p.proof),\n { ...p.params, creation: { ...p.params.creation, ...normalizeFee(p.params.creation) } },\n p.deliveries,\n r.creation.funding,\n ]) as Hex,\n approveAmount: r.creation.funding.amount,\n };\n}\n","import { getAddress } from \"ethers\";\nimport type { Address } from \"../contracts/index\";\nimport { uint, ZERO_ADDRESS } from \"../validation\";\n/** Canonical optional public fee. Omitting both fields explicitly selects zero fee. */\nexport function normalizeFee(p: { feeRecipient?: Address; feeAmount?: bigint }) {\n const feeRecipient = getAddress(p.feeRecipient ?? ZERO_ADDRESS) as Address;\n const feeAmount = uint(p.feeAmount ?? 0n, 128, \"feeAmount\");\n if ((BigInt(feeRecipient) === 0n) !== (feeAmount === 0n))\n throw new Error(\"invalid fee context\");\n return { feeRecipient, feeAmount };\n}\n","// AUTO-GENERATED from invisi-protocol build artifacts. Run pnpm sync:abis.\nexport const invisiProtocolAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct InstanceParams\",\n \"components\": [\n {\n \"name\": \"factory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"globalEmergency\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"emergencyAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"verifierRouter\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ]\n },\n {\n \"name\": \"_screener\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_addressRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"CHAIN_ID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FUND_SHIELD_TYPEHASH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FUND_TRANSACT_TYPEHASH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeNoteTreeId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addressRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IAddressRegistry\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"broadcasterFeeBalance\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelCredit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CancelCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"source\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.InputSource\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"circuitPaused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createCredit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"changeCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creditDraw\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreditDrawParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"remainderCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"expiries\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"recoveryAmounts\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"totalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyAdmin\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"factory\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNoteTreeNextLeafIndex\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNoteTreeRoot\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTreeCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalEmergency\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"invalidateNonce\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isCommitmentPaid\",\n \"inputs\": [\n {\n \"name\": \"noteCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isNullifierSpent\",\n \"inputs\": [\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isTreeFull\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseCircuit\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"paused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rootHistory\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"screener\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setScreener\",\n \"inputs\": [\n {\n \"name\": \"newScreener\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"shield\",\n \"inputs\": [\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.ShieldParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.ShieldOutput[]\",\n \"components\": [\n {\n \"name\": \"identity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"topUpCredit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.TopUpCreditParams\",\n \"components\": [\n {\n \"name\": \"creation\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"changeCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"creditSource\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.InputSource\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"creditNullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousExpiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transact\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"r\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.TransactRequest\",\n \"components\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CrossTreeTransactParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"outputCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"funding\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transact\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"requests\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.TransactRequest[]\",\n \"components\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CrossTreeTransactParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"outputCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"funding\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseCircuit\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"verifierRouter\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawBroadcasterFees\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"BatchOutputs\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"firstOutputOffset\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokens\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"commitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"packedDeliveries\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BatchRequest\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requestIndex\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"capacity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"outputCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"depositAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"statementHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BroadcasterFee\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BroadcasterFeeWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CircuitPauseUpdated\",\n \"inputs\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CommitmentsInserted\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"commitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditCancelled\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"inputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditCreated\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"changeCommitment\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditDraw\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.CreditDrawParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"remainderCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"expiries\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"recoveryAmounts\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"totalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"remainderLeafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditToppedUp\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.TopUpCreditParams\",\n \"components\": [\n {\n \"name\": \"creation\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"changeCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"creditSource\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.InputSource\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"creditNullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousExpiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CrossTreeTransact\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"outputCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NonceInvalidated\",\n \"inputs\": [\n {\n \"name\": \"signer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newNonce\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Paused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PublicDeposit\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"proofHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ScreenerUpdated\",\n \"inputs\": [\n {\n \"name\": \"newScreener\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Shield\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transact\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"inputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"outputCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TransactAggregated\",\n \"inputs\": [\n {\n \"name\": \"proofHash\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreeCreated\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Unpaused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressInsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressScreeningFailed\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ChainIdMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CommitmentAlreadyPaid\",\n \"inputs\": [\n {\n \"name\": \"commitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CreditDrawWindowClosed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DoubleSpend\",\n \"inputs\": [\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EnforcedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExpectedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExpiryInPast\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedInnerCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InexactTokenReceipt\",\n \"inputs\": [\n {\n \"name\": \"requested\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"received\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddressRegistry\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAggregateBatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidBatchSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCommitment\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreditExpiry\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidDelivery\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFunding\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidIdentityCommitment\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMerkleRoot\",\n \"inputs\": [\n {\n \"name\": \"root\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNullifierKeyHash\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOwnerIdentityCommitment\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPrivateTransferCiphertext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPrivateTransferContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPrivateTransferShape\",\n \"inputs\": [\n {\n \"name\": \"inputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidProof\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidReceivingAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShieldContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShieldOutputCount\",\n \"inputs\": [\n {\n \"name\": \"outputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidToken\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTree\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"LengthMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoBroadcasterFees\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotEmergencyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGlobalEmergency\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NullifierAlreadySpent\",\n \"inputs\": [\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NullifiersEmpty\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PrivateTransferExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ShieldExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SignatureExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StaleRoot\",\n \"inputs\": [\n {\n \"name\": \"root\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TreeFull\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"WrongPermitToken\",\n \"inputs\": [\n {\n \"name\": \"provided\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"expected\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroNullifier\",\n \"inputs\": []\n }\n] as const\n","// AUTO-GENERATED from invisi-protocol build artifacts. Run pnpm sync:abis.\nexport const invisiFactoryAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"initialOwner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"globalEmergency_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"verifierRouter_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationCodeHash_\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"computeInstanceAddress\",\n \"inputs\": [\n {\n \"name\": \"creationCode\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"initialOwner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"emergencyAdmin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"screener_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"addressRegistry_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creationCodeHash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy\",\n \"inputs\": [\n {\n \"name\": \"creationCode\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"initialOwner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"emergencyAdmin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"screener_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"addressRegistry_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyPauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyPauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyUnpauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyUnpauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getInstanceAddress\",\n \"inputs\": [\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalEmergency\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"instanceCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isInstance\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"verifierRouter\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyPauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyPauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyUnpauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyUnpauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InstanceDeployed\",\n \"inputs\": [\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InstanceAlreadyDeployed\",\n \"inputs\": [\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreationCode\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAnInstance\",\n \"inputs\": [\n {\n \"name\": \"addr\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGlobalEmergency\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n] as const\n","// AUTO-GENERATED from invisi-protocol build artifacts. Run pnpm sync:abis.\nexport const invisiAddressRegistryAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"CHAIN_ID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isRegistered\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonceOf\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"receivingKeysOf\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"keys\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.ReceivingKeys\",\n \"components\": [\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"registerKeys\",\n \"inputs\": [\n {\n \"name\": \"registration\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.Registration\",\n \"components\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.ReceivingKeys\",\n \"components\": [\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateKeys\",\n \"inputs\": [\n {\n \"name\": \"registration\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.Registration\",\n \"components\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.ReceivingKeys\",\n \"components\": [\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ReceivingKeysSet\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nextNonce\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ChainIdMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidReceivingKeys\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRegistrationSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWalletIdentity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NonceExhausted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistrationExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n }\n] as const\n","import {\n AbiCoder,\n dataLength,\n getAddress,\n Interface,\n isHexString,\n keccak256,\n ParamType,\n} from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport { normalizeFee } from \"../fees/fee\";\n\nimport { computeWalletAuthorizationDigest, walletAuthorizationTypedData } from \"@invisi-labs/core\";\nimport { invisiProtocolAbi, type CreateCreditParams, type Delivery } from \"../contracts/index\";\nimport {\n checkDeadline,\n deliveriesHash,\n dense,\n field,\n fundingFields,\n getEIP712Domain,\n known,\n normalizeContext,\n normalizeFunding,\n normalizeOpaqueDelivery,\n normalizeSources,\n notes,\n pad,\n uint,\n validateFundingSubmission,\n word,\n ZERO_ADDRESS,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nconst creationTuple = [\n \"(address token,(uint256 treeId,bytes32 merkleRoot)[] sources,bytes32[] nullifiers,bytes32 creditCommitment,bytes32 changeCommitment,address owner,uint256 expiry,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n][0]!;\nexport const CREATE_CREDIT_FIELDS = [\n \"token\",\n \"sources\",\n \"nullifiers\",\n \"creditCommitment\",\n \"changeCommitment\",\n \"owner\",\n \"expiry\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n] as const;\n/** Public checks cannot establish ownership or conservation: those are enforced by the proof. */\nexport function validateCreateCreditRequest(\n c: TransactionContext,\n p: CreateCreditParams,\n cs: readonly Delivery[],\n funding: FundingInput = {}\n) {\n known(p, CREATE_CREDIT_FIELDS);\n if ((getAddress(p.token) as Hex) !== (getAddress(c.tokenAddress) as Hex))\n throw new Error(\"request token mismatch\");\n const ctx = normalizeContext(c),\n ns = notes(p.nullifiers, \"nullifiers\"),\n sources = normalizeSources(p.sources, ns.length, 10),\n creditCommitment = word(field(p.creditCommitment)),\n changeCommitment = word(field(p.changeCommitment)),\n owner = getAddress(p.owner) as Hex,\n expiry = uint(p.expiry, 64, \"expiry\"),\n deadline = checkDeadline(c, p.deadline),\n f = normalizeFunding(funding);\n if (BigInt(creditCommitment) === 0n || creditCommitment === changeCommitment)\n throw new Error(\"zero or duplicate commitment\");\n if (BigInt(owner) === 0n || expiry === 0n || (c.now !== undefined && expiry <= c.now))\n throw new Error(\"owner must be nonzero and expiry future\");\n if (dense(cs, \"deliveries\").length !== 3) throw new Error(\"deliveries count mismatch\");\n const deliveries = cs.map((v, i) =>\n normalizeOpaqueDelivery(v, {\n empty: i === 2 && BigInt(changeCommitment) === 0n,\n allowEmpty: i === 2,\n })\n );\n if (ns.length === 0 && f.amount === 0n)\n throw new Error(\"empty inputs require positive funding\");\n return {\n ...ctx,\n ...normalizeFee(p),\n sources,\n nullifiers: ns,\n actualCount: ns.length,\n sourceCount: sources.length,\n creditCommitment,\n changeCommitment,\n owner,\n expiry,\n deadline,\n deliveries,\n funding: f,\n };\n}\nexport function createCreditBaseInputs(\n c: TransactionContext,\n p: CreateCreditParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = validateCreateCreditRequest(c, p, cs, f),\n h = BigInt(deliveriesHash(cs));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.owner),\n BigInt(r.actualCount),\n BigInt(r.sourceCount),\n ...pad(\n r.sources.map((s) => s.treeId),\n 10\n ),\n ...pad(\n r.sources.map((s) => BigInt(s.merkleRoot)),\n 10\n ),\n ...pad(r.nullifiers.map(BigInt), 10),\n BigInt(r.creditCommitment),\n BigInt(r.changeCommitment),\n h >> 128n,\n h & ((1n << 128n) - 1n),\n r.expiry,\n r.deadline,\n r.funding.amount,\n BigInt(r.funding.payer),\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function createCreditPublicInputs(\n c: TransactionContext,\n p: CreateCreditParams,\n deliveries: readonly Delivery[],\n funding: FundingInput = {}\n) {\n const base = createCreditBaseInputs(c, p, deliveries, funding);\n const digest = BigInt(\n computeWalletAuthorizationDigest({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"create-credit\",\n capacity: 10,\n words: base.map(BigInt),\n })\n );\n return [...base, word(digest >> 128n), word(digest & ((1n << 128n) - 1n))];\n}\nconst hashContext = {\n chainId: 0n,\n protocolAddress: ZERO_ADDRESS,\n tokenAddress: ZERO_ADDRESS,\n};\nexport function createCreditRequestHash(\n p: CreateCreditParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = validateCreateCreditRequest({ ...hashContext, tokenAddress: p.token }, p, cs, f);\n return keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\n { type: \"bytes32\" },\n creationTuple,\n { type: \"bytes32\" },\n { type: \"address\" },\n { type: \"uint256\" },\n ].map((parameter) => ParamType.from(parameter)),\n [\n keccak256(new TextEncoder().encode(\"InvisiCreateCredit\")),\n { ...p, ...normalizeFee(p) },\n deliveriesHash(cs),\n r.funding.payer,\n r.funding.amount,\n ]\n ) as Hex\n ) as Hex;\n}\nexport function encodeCreateCreditTypedData(\n c: TransactionContext,\n p: CreateCreditParams,\n deliveries: readonly Delivery[],\n funding: FundingInput = {}\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"create-credit\",\n capacity: 10,\n words: createCreditBaseInputs(c, p, deliveries, funding).map(BigInt),\n });\n}\nexport function encodeCreateCreditFundingTypedData(\n c: TransactionContext,\n p: CreateCreditParams,\n cs: readonly Delivery[],\n f: FundingInput\n) {\n const r = validateCreateCreditRequest(c, p, cs, f);\n if (r.funding.amount === 0n) throw new Error(\"funding authorization requires positive deposit\");\n return {\n domain: getEIP712Domain(c),\n primaryType: \"FundTransact\" as const,\n types: { FundTransact: fundingFields },\n message: {\n requestHash: createCreditRequestHash(p, cs, f),\n payer: r.funding.payer,\n amount: r.funding.amount,\n sigNonce: r.funding.sigNonce,\n deadline: r.funding.deadline,\n },\n };\n}\nexport interface BuildCreateCreditCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: CreateCreditParams;\n deliveries: readonly Delivery[];\n funding?: FundingInput;\n caller?: Address;\n}\nexport function buildCreateCreditCalldata(p: BuildCreateCreditCalldataParams) {\n const r = validateCreateCreditRequest(p.context, p.params, p.deliveries, p.funding);\n validateFundingSubmission(r.funding, p.caller, p.context.now);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"createCredit\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n p.deliveries,\n r.funding,\n ]) as Hex,\n approveAmount: r.funding.amount,\n };\n}\n\n/** Frame a raw direct proof from the proving backend for the Credit verifier adapter. */\nexport function encodeCreditProof(proof: Hex): Hex {\n if (!isHexString(proof) || !/^0x(?:[a-fA-F0-9]{2})*$/.test(proof) || dataLength(proof) === 0)\n throw new Error(\"empty or malformed Credit proof\");\n return AbiCoder.defaultAbiCoder().encode(\n [\"uint8\", \"bytes\"].map((parameter) => ParamType.from(parameter)),\n [0, proof]\n ) as Hex;\n}\n","import { normalizeCreditDeliveryState } from \"@invisi-labs/core\";\nimport type { Hex } from \"../contracts/index\";\nimport { check, pad, policyWitness, zeros } from \"./common\";\nimport type { CreateCreditWitnessParams } from \"./types\";\nimport { WitnessContext } from \"./WitnessContext\";\nexport async function creation(\n witness: WitnessContext,\n p: CreateCreditWitnessParams,\n operation: \"create-credit\" | \"top-up-credit\",\n words: readonly Hex[]\n) {\n const state = normalizeCreditDeliveryState(p.state),\n note = state.note;\n check(\n (await witness.creditLeaf(note)) === p.params.creditCommitment &&\n note.ownerPayout === BigInt(p.params.owner) &&\n note.expiry === p.params.expiry,\n \"Credit creation mismatch\"\n );\n if (\n operation === \"create-credit\" &&\n [note.lastDay, note.dailySpent, note.lastMonth, note.monthlySpent].some((v) => v !== 0n)\n )\n throw new Error(\"new Credit usage must be zero\");\n const authority = await witness.authority(\n operation,\n 10,\n words,\n p.authorization,\n note.ownerWalletIdentity\n );\n const sources = await witness.noteInputs(\n p.inputs,\n p.params.sources,\n p.params.nullifiers,\n note.ownerWalletIdentity,\n authority\n );\n if (p.change)\n check(\n p.change.ownerAddress === note.ownerWalletIdentity &&\n (await witness.noteLeaf(p.change)) === p.params.changeCommitment,\n \"change commitment mismatch\"\n );\n else check(BigInt(p.params.changeCommitment) === 0n, \"missing change note\");\n return {\n ...authority,\n input_amounts: pad(\n p.inputs.map((input) => input.note.amount),\n 10,\n () => 0n\n ),\n input_nonces: pad(\n p.inputs.map((input) => input.note.nonce),\n 10,\n () => 0n\n ),\n leaf_indices: pad(\n p.inputs.map((input) => BigInt(input.leafIndex)),\n 10,\n () => 0n\n ),\n merkle_paths: pad(\n p.inputs.map((input) => [...input.path]),\n 10,\n zeros\n ),\n input_source_indices: pad(sources, 10, () => 0n),\n spender_payout: note.spenderPayout,\n spender_wallet_identity: BigInt(note.spenderWalletIdentity),\n owner_wallet_identity: BigInt(note.ownerWalletIdentity),\n ...policyWitness(note, operation === \"top-up-credit\"),\n credit_amount: note.amount,\n credit_nonce: note.nonce,\n credit_shared_key: note.creditSharedKey,\n change_amount: p.change?.amount ?? 0n,\n change_nonce: p.change?.nonce ?? 0n,\n };\n}\n","import { type ProvingRequest } from \"@invisi-labs/prover\";\nimport { createCreditPublicInputs } from \"../credit/credit-create\";\nimport { provingRequest } from \"./common\";\nimport { creation } from \"./credit-creation\";\nimport type { CreateCreditWitnessParams } from \"./types\";\nimport { WitnessContext } from \"./WitnessContext\";\nexport async function createCredit(\n witness: WitnessContext,\n p: CreateCreditWitnessParams\n): Promise<ProvingRequest> {\n const words = createCreditPublicInputs(\n witness.protocol.context,\n p.params,\n p.deliveries,\n p.funding\n );\n return provingRequest(\n \"create_credit\",\n await creation(witness, p, \"create-credit\", words),\n words\n );\n}\n","import {\n applyCreditDrawUsage,\n computeCreditNullifier,\n normalizeCreditDeliveryState,\n normalizeCreditPolicy,\n} from \"@invisi-labs/core\";\nimport { type CircuitName, type ProvingRequest } from \"@invisi-labs/prover\";\nimport { creditDrawPublicInputs, selectCreditDrawCircuit } from \"../credit/credit-lifecycle\";\nimport { check, pad, provingRequest, zeros } from \"./common\";\nimport type { DrawCreditWitnessParams } from \"./types\";\nimport { WitnessContext } from \"./WitnessContext\";\nexport async function drawCredit(\n witness: WitnessContext,\n p: DrawCreditWitnessParams\n): Promise<ProvingRequest> {\n const c = { ...witness.protocol.context, timestamp: p.timestamp },\n profile = selectCreditDrawCircuit(p.inputs.length),\n capacity = profile.maxSize;\n check(\n p.inputs.length === p.amounts.length && p.inputs.length === p.params.nullifiers.length,\n \"draw input count mismatch\"\n );\n const notes = p.inputs.map((input) => normalizeCreditDeliveryState(input.state).note),\n identity = notes[0]!.spenderWalletIdentity;\n const words = creditDrawPublicInputs(c, p.params, p.deliveries),\n authority = await witness.authority(\n \"credit-draw\",\n capacity,\n words,\n p.authorization,\n identity\n );\n const sourceIndices = await Promise.all(\n notes.map(async (note, i) => {\n applyCreditDrawUsage(note, p.amounts[i]!, p.timestamp);\n const leaf = await witness.creditLeaf(note);\n check(\n note.spenderWalletIdentity === identity &&\n note.spenderPayout === BigInt(p.params.spender) &&\n note.expiry === p.params.expiries[i] &&\n p.amounts[i]! > 0n &&\n p.amounts[i]! <= note.amount &&\n (await computeCreditNullifier(c.chainId, note.creditSharedKey, leaf)) ===\n p.params.nullifiers[i],\n \"Credit draw mismatch\"\n );\n return BigInt(await witness.membership(leaf, p.inputs[i]!, p.params.sources));\n })\n );\n return provingRequest(\n profile.name as CircuitName,\n {\n ...authority,\n ...Object.fromEntries(\n Object.entries({\n singleLimit: \"single_limits\",\n dailyLimit: \"daily_limits\",\n monthlyLimit: \"monthly_limits\",\n lastDay: \"last_days\",\n dailySpent: \"daily_spents\",\n lastMonth: \"last_months\",\n monthlySpent: \"monthly_spents\",\n }).map(([key, name]) => [\n name,\n pad(\n notes.map(\n (note) =>\n normalizeCreditPolicy(note)[\n key as keyof ReturnType<typeof normalizeCreditPolicy>\n ]\n ),\n capacity,\n () => 0n\n ),\n ])\n ),\n spender_wallet_identity: BigInt(identity),\n owner_payouts: pad(\n notes.map((note) => note.ownerPayout),\n capacity,\n () => 0n\n ),\n owner_wallet_identities: pad(\n notes.map((note) => BigInt(note.ownerWalletIdentity)),\n capacity,\n () => 0n\n ),\n input_amounts: pad(\n notes.map((note) => note.amount),\n capacity,\n () => 0n\n ),\n input_nonces: pad(\n notes.map((note) => note.nonce),\n capacity,\n () => 0n\n ),\n credit_shared_keys: pad(\n notes.map((note) => note.creditSharedKey),\n capacity,\n () => 0n\n ),\n leaf_indices: pad(\n p.inputs.map((input) => BigInt(input.leafIndex)),\n capacity,\n () => 0n\n ),\n merkle_paths: pad(\n p.inputs.map((input) => [...input.path]),\n capacity,\n zeros\n ),\n input_source_indices: pad(sourceIndices, capacity, () => 0n),\n draw_amounts: pad(p.amounts, capacity, () => 0n),\n },\n words\n );\n}\n","import { computeCreditNullifier, normalizeCreditDeliveryState } from \"@invisi-labs/core\";\nimport { type ProvingRequest } from \"@invisi-labs/prover\";\nimport { topUpCreditPublicInputs } from \"../credit/credit-lifecycle\";\nimport { check, provingRequest } from \"./common\";\nimport { creation } from \"./credit-creation\";\nimport type { TopUpCreditWitnessParams } from \"./types\";\nimport { WitnessContext } from \"./WitnessContext\";\nexport async function topUpCredit(\n witness: WitnessContext,\n p: TopUpCreditWitnessParams\n): Promise<ProvingRequest> {\n const c = witness.protocol.context,\n previous = normalizeCreditDeliveryState(p.previous.state),\n next = normalizeCreditDeliveryState(p.state),\n old = previous.note,\n note = next.note,\n leaf = await witness.creditLeaf(old);\n for (const field of [\n \"spenderWalletIdentity\",\n \"ownerWalletIdentity\",\n \"spenderPayout\",\n \"ownerPayout\",\n \"creditSharedKey\",\n \"lastDay\",\n \"dailySpent\",\n \"lastMonth\",\n \"monthlySpent\",\n ] as const)\n check(old[field] === note[field], \"Credit role or payout changed\");\n check(\n JSON.stringify(previous.ownerReceivingKeys) === JSON.stringify(next.ownerReceivingKeys) &&\n JSON.stringify(previous.spenderReceivingKeys) ===\n JSON.stringify(next.spenderReceivingKeys),\n \"Credit receiving snapshots changed\"\n );\n check(\n old.amount < note.amount &&\n old.expiry <= note.expiry &&\n old.expiry === p.params.previousExpiry &&\n (c.now === undefined || old.expiry > c.now),\n \"invalid Credit top-up\"\n );\n check(\n (await computeCreditNullifier(c.chainId, old.creditSharedKey, leaf)) ===\n p.params.creditNullifier,\n \"previous Credit nullifier mismatch\"\n );\n await witness.membership(leaf, p.previous, [p.params.creditSource]);\n const words = topUpCreditPublicInputs(c, p.params, p.deliveries, p.funding),\n base = await creation(witness, { ...p, params: p.params.creation }, \"top-up-credit\", words);\n return provingRequest(\n \"credit_top_up\",\n {\n ...base,\n previous_single_limit: old.singleLimit!,\n previous_daily_limit: old.dailyLimit!,\n previous_monthly_limit: old.monthlyLimit!,\n previous_credit_amount: old.amount,\n previous_credit_nonce: old.nonce,\n previous_credit_leaf_index: BigInt(p.previous.leafIndex),\n previous_credit_merkle_path: [...p.previous.path],\n },\n words\n );\n}\n","import { computeNoteCommitment, computeNoteIdentity } from \"@invisi-labs/core\";\nimport { type ProvingRequest } from \"@invisi-labs/prover\";\nimport type { Hex } from \"../contracts/index\";\nimport { transactUserPublicInputs } from \"../funds/public-inputs\";\nimport { normalizeTransactRequest } from \"../funds/request\";\nimport { field, uint, word } from \"../validation\";\nimport { check, pad, provingRequest, zeroAuthority, zeros } from \"./common\";\nimport type { TransactWitnessParams } from \"./types\";\nimport { WitnessContext } from \"./WitnessContext\";\nexport async function transact(\n witness: WitnessContext,\n p: TransactWitnessParams\n): Promise<ProvingRequest> {\n const c = witness.protocol.context,\n n = normalizeTransactRequest(c, p.params, p.deliveries, p.funding),\n words = transactUserPublicInputs(c, p.params, p.deliveries, p.funding);\n check(\n p.inputs.length === n.inputCount && p.outputs.length === n.outputCount,\n \"note count mismatch\"\n );\n const identity = p.inputs[0]?.note.ownerAddress;\n const unsignedSweep =\n !!identity &&\n !p.authorization &&\n n.outputCount === 0 &&\n n.depositAmount === 0n &&\n n.feeAmount === 0n &&\n BigInt(p.params.withdrawalAddress) === BigInt(identity);\n const authority =\n identity && !unsignedSweep\n ? await witness.authority(\"transact\", n.capacity, words, p.authorization, identity)\n : zeroAuthority();\n const sources = await witness.noteInputs(\n p.inputs,\n p.params.sources,\n p.params.nullifiers,\n identity ?? ((\"0x\" + \"00\".repeat(32)) as Hex),\n authority\n );\n const outputs = await Promise.all(\n p.outputs.map(async (output, i) => {\n const opening = \"identity\" in output ? output.note : output;\n const identity =\n \"identity\" in output\n ? field(output.identity)\n : BigInt(await computeNoteIdentity(BigInt(output.ownerAddress), output.nonce));\n const amount = uint(output.amount, 128, \"output amount\");\n check(identity !== 0n && amount !== 0n, \"zero output identity or amount\");\n if (opening) {\n witness.context(opening);\n check(\n opening.amount === amount &&\n BigInt(\n await computeNoteIdentity(BigInt(opening.ownerAddress), opening.nonce)\n ) === identity,\n \"output opening mismatch\"\n );\n }\n const commitment = await computeNoteCommitment(\n c.chainId,\n word(identity),\n BigInt(c.tokenAddress),\n amount\n );\n check(commitment === p.params.outputCommitments[i], \"output commitment mismatch\");\n return { identity, amount };\n })\n );\n const all = [...p.inputs.map((input) => input.note), ...outputs];\n return provingRequest(\n `transact_user_slots${n.capacity}`,\n {\n input_owner_address: identity ? BigInt(identity) : 0n,\n ...authority,\n output_identities: pad(\n [...p.inputs.map(() => 0n), ...outputs.map((output) => output.identity)],\n n.capacity,\n () => 0n\n ),\n amounts: pad(\n all.map((note) => note.amount),\n n.capacity,\n () => 0n\n ),\n nonces: pad(\n [...p.inputs.map((input) => input.note.nonce), ...outputs.map(() => 0n)],\n n.capacity,\n () => 0n\n ),\n leaf_indices: pad(\n p.inputs.map((input) => BigInt(input.leafIndex)),\n n.capacity,\n () => 0n\n ),\n merkle_paths: pad(\n p.inputs.map((input) => [...input.path]),\n n.capacity,\n zeros\n ),\n input_source_indices: pad(sources, n.capacity, () => 0n),\n },\n words,\n p.target\n );\n}\n","import { TypedDataEncoder } from \"ethers\";\nimport { type Delivery } from \"../contracts/index\";\nimport { word, type FundingInput, type TransactionContext } from \"../validation\";\nimport { encodeTransactTypedData } from \"./funding\";\nimport { transactPublicInputs, TransactRequestParams } from \"./request\";\n\n/** Full active user-circuit public inputs: business statement followed by EIP-712 digest limbs. */\nexport function transactUserPublicInputs(\n c: TransactionContext,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const words = transactPublicInputs(c, p, cs, f),\n digest = BigInt(\n ((typed) =>\n TypedDataEncoder.hash(\n typed.domain,\n Object.fromEntries(\n Object.entries(typed.types).map(([name, fields]) => [\n name,\n [...(fields as readonly { name: string; type: string }[])],\n ])\n ),\n typed.message\n ))(encodeTransactTypedData(c, p, cs, f))\n );\n return [...words, word(digest >> 128n), word(digest & ((1n << 128n) - 1n))];\n}\n","import { walletAuthorizationTypedData } from \"@invisi-labs/core\";\nimport { AbiCoder, keccak256, ParamType } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\nimport { type Delivery } from \"../contracts/index\";\nimport {\n deliveriesHash,\n fundingFields,\n getEIP712Domain,\n normalizeFunding,\n word,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nimport { crossTuple, singleTuple } from \"./abi-tuples\";\nimport { normalizeTransactRequest, transactPublicInputs, TransactRequestParams } from \"./request\";\n\nexport function encodeTransactTypedData(\n c: TransactionContext,\n p: TransactRequestParams,\n deliveries: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = normalizeTransactRequest(c, p, deliveries, f);\n return walletAuthorizationTypedData({\n context: { chainId: r.chainId, protocolAddress: BigInt(r.protocolAddress) },\n operation: \"transact\",\n capacity: r.capacity,\n words: transactPublicInputs(c, p, deliveries, f).map(BigInt),\n });\n}\n\nexport function transactFundingRequestHash(\n proof: Hex,\n p: TransactRequestParams,\n cs: readonly Delivery[]\n) {\n const single = {\n token: p.token,\n merkleRoot: p.sources[0]?.merkleRoot ?? word(0n),\n nullifiers: p.nullifiers,\n outputCommitments: p.outputCommitments,\n inputTreeId: p.sources[0]?.treeId ?? 0n,\n withdrawalAddress: p.withdrawalAddress,\n withdrawalAmount: p.withdrawalAmount,\n deadline: p.deadline,\n feeRecipient: p.feeRecipient ?? \"0x0000000000000000000000000000000000000000\",\n feeAmount: p.feeAmount ?? 0n,\n };\n return p.sources.length > 1\n ? (keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [{ type: \"bytes32\" }, { type: \"bytes32\" }, crossTuple, { type: \"bytes32\" }].map(\n (parameter) => ParamType.from(parameter)\n ),\n [\n keccak256(new TextEncoder().encode(\"InvisiCrossTreeTransact\")),\n keccak256(proof),\n { ...p, feeRecipient: single.feeRecipient, feeAmount: single.feeAmount },\n deliveriesHash(cs),\n ]\n ) as Hex\n ) as Hex)\n : (keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [{ type: \"bytes32\" }, singleTuple, { type: \"bytes32\" }].map((parameter) =>\n ParamType.from(parameter)\n ),\n [keccak256(proof), single, deliveriesHash(cs)]\n ) as Hex\n ) as Hex);\n}\n\nexport function encodeTransactFundingTypedData(\n c: TransactionContext,\n proof: Hex,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n funding: FundingInput\n) {\n normalizeTransactRequest(c, p, cs, funding);\n const f = normalizeFunding(funding);\n if (f.amount === 0n) throw new Error(\"funding authorization requires positive deposit\");\n return {\n domain: getEIP712Domain(c),\n primaryType: \"FundTransact\" as const,\n types: { FundTransact: fundingFields },\n message: {\n requestHash: transactFundingRequestHash(proof, p, cs),\n payer: f.payer,\n amount: f.amount,\n sigNonce: f.sigNonce,\n deadline: f.deadline,\n },\n };\n}\n","export const singleTuple = [\n \"(address token,bytes32 merkleRoot,bytes32[] nullifiers,bytes32[] outputCommitments,uint256 inputTreeId,address withdrawalAddress,uint256 withdrawalAmount,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n][0]!;\n\nexport const crossTuple = [\n \"(address token,(uint256 treeId,bytes32 merkleRoot)[] sources,bytes32[] nullifiers,bytes32[] outputCommitments,address withdrawalAddress,uint256 withdrawalAmount,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n][0]!;\n","import { getAddress } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\nimport { type CrossTreeTransactParams, type Delivery } from \"../contracts/index\";\nimport {\n checkDeadline,\n deliveriesHash,\n dense,\n known,\n normalizeContext,\n normalizeFunding,\n normalizeOpaqueDelivery,\n normalizeSources,\n notes,\n pad,\n uint,\n word,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\n\nexport const TRANSACT_CAPACITIES = [14, 56, 112, 168] as const;\n\nexport type TransactCapacity = (typeof TRANSACT_CAPACITIES)[number];\n\nexport function selectTransactCapacity(inputs: number, outputs: number): TransactCapacity {\n if (\n !Number.isInteger(inputs) ||\n !Number.isInteger(outputs) ||\n inputs < 0 ||\n outputs < 0 ||\n inputs + outputs < 1 ||\n (inputs === 0 && outputs < 2) ||\n inputs + outputs > 168\n )\n throw new Error(\"unsupported transact shape\");\n return TRANSACT_CAPACITIES.find((n) => inputs + outputs <= n)!;\n}\n\nexport type TransactRequestParams = CrossTreeTransactParams;\n\nexport function normalizeTransactRequest(\n c: TransactionContext,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n funding: FundingInput = {}\n) {\n const ctx = normalizeContext(c);\n if ((getAddress(p.token) as Hex) !== ctx.tokenAddress)\n throw new Error(\"request token mismatch\");\n known(p, [\n \"token\",\n \"sources\",\n \"nullifiers\",\n \"outputCommitments\",\n \"withdrawalAddress\",\n \"withdrawalAmount\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n ]);\n const ns = notes(p.nullifiers, \"nullifiers\"),\n os = notes(p.outputCommitments, \"outputCommitments\"),\n capacity = selectTransactCapacity(ns.length, os.length);\n const sources = normalizeSources(p.sources, ns.length, capacity),\n deliveries = dense(cs, \"deliveries\").map((v) =>\n normalizeOpaqueDelivery(v, { allowEmpty: true })\n );\n if (deliveries.length !== os.length) throw new Error(\"deliveries count mismatch\");\n const withdrawalAmount = uint(p.withdrawalAmount, 128, \"withdrawalAmount\"),\n withdrawalAddress = getAddress(p.withdrawalAddress) as Hex,\n f = normalizeFunding(funding);\n const feeAmount = uint(p.feeAmount ?? 0n, 128, \"feeAmount\");\n const feeRecipient = getAddress(\n p.feeRecipient ?? \"0x0000000000000000000000000000000000000000\"\n ) as Hex;\n if ((feeAmount === 0n) !== (BigInt(feeRecipient) === 0n)) throw new Error(\"invalid fee\");\n if (\n (withdrawalAmount === 0n) !== (BigInt(withdrawalAddress) === 0n) ||\n (os.length === 0 && withdrawalAmount === 0n)\n )\n throw new Error(\"invalid withdrawal\");\n if (ns.length === 0 && (f.amount === 0n || withdrawalAmount !== 0n))\n throw new Error(\"zero inputs require positive funding and zero withdrawal\");\n return {\n ...ctx,\n capacity,\n sources,\n nullifiers: ns,\n outputCommitments: os,\n inputCount: ns.length,\n outputCount: os.length,\n sourceCount: sources.length,\n inputTreeIds: pad(\n sources.map((s) => s.treeId),\n capacity\n ),\n merkleRoots: pad(\n sources.map((s) => BigInt(s.merkleRoot)),\n capacity\n ),\n slotValues: pad([...ns, ...os].map(BigInt), capacity),\n deliveries,\n deliveriesHash: deliveriesHash(deliveries),\n withdrawalAddress,\n withdrawalAmount,\n feeRecipient,\n feeAmount,\n deadline: checkDeadline(c, p.deadline),\n depositAmount: f.amount,\n depositPayer: f.payer,\n funding: f,\n };\n}\n\nexport function transactPublicInputs(\n c: TransactionContext,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = normalizeTransactRequest(c, p, cs, f),\n h = BigInt(r.deliveriesHash);\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.inputCount),\n BigInt(r.outputCount),\n BigInt(r.sourceCount),\n ...r.inputTreeIds,\n ...r.merkleRoots,\n ...r.slotValues,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n BigInt(r.withdrawalAddress),\n r.withdrawalAmount,\n r.deadline,\n r.depositAmount,\n BigInt(r.depositPayer),\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\n","import {\n type CircuitName,\n type ProofStatement,\n type ProofTarget,\n type ProvingRequest,\n} from \"@invisi-labs/prover\";\nimport { TokenProtocol } from \"../client/TokenProtocol\";\nimport type { Hex } from \"../contracts/index\";\n\nimport { WitnessContext } from \"./WitnessContext\";\nimport { witnessStatement } from \"./common\";\nimport { cancelCredit } from \"./credit-cancel\";\nimport { createCredit } from \"./credit-create\";\nimport { drawCredit } from \"./credit-draw\";\nimport { topUpCredit } from \"./credit-top-up\";\nimport { transact } from \"./transact\";\nimport type {\n CancelCreditWitnessParams,\n CreateCreditWitnessParams,\n DrawCreditWitnessParams,\n TopUpCreditWitnessParams,\n TransactWitnessParams,\n} from \"./types\";\nexport type {\n CancelCreditWitnessParams,\n CreateCreditWitnessParams,\n CreditMembership,\n DrawCreditWitnessParams,\n NoteMembership,\n TopUpCreditWitnessParams,\n TransactWitnessParams,\n} from \"./types\";\n/** Assemble witnesses through operation-specific builders with shared validation. */\nexport class WitnessBuilder {\n readonly #witness: WitnessContext;\n constructor(protocol: TokenProtocol) {\n this.#witness = new WitnessContext(protocol);\n }\n static statement(\n circuitName: CircuitName,\n expectedPublicInputs: readonly Hex[],\n target: ProofTarget = \"evm\"\n ): ProofStatement {\n return witnessStatement(circuitName, expectedPublicInputs, target);\n }\n async transact(p: TransactWitnessParams): Promise<ProvingRequest> {\n return transact(this.#witness, p);\n }\n async createCredit(p: CreateCreditWitnessParams): Promise<ProvingRequest> {\n return createCredit(this.#witness, p);\n }\n async cancelCredit(p: CancelCreditWitnessParams): Promise<ProvingRequest> {\n return cancelCredit(this.#witness, p);\n }\n async drawCredit(p: DrawCreditWitnessParams): Promise<ProvingRequest> {\n return drawCredit(this.#witness, p);\n }\n async topUpCredit(p: TopUpCreditWitnessParams): Promise<ProvingRequest> {\n return topUpCredit(this.#witness, p);\n }\n}\n","import { Contract, getAddress, keccak256, type Provider } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\n\nimport {\n defineDeployment,\n type ProtocolDeployment,\n type ProtocolRpcClient,\n} from \"@invisi-labs/rpc\";\nimport {\n buildTransactAggregateCalldata,\n type BuildTransactAggregateCalldataParams,\n} from \"../funds/aggregate\";\nimport type { ChainReader } from \"../interfaces\";\nimport { known, type DeploymentContext } from \"../validation\";\nimport { TokenProtocol } from \"./TokenProtocol\";\n\nexport interface ProtocolOptions {\n deployment: ProtocolDeployment;\n}\n\n/** A multi-token deployment. Asset support is always read from the chain. */\nexport class Protocol {\n readonly deployment: Readonly<ProtocolDeployment>;\n readonly context: Readonly<DeploymentContext>;\n\n constructor(options: ProtocolOptions) {\n known(options, [\"deployment\"], \"protocol options\");\n this.deployment = defineDeployment(options.deployment);\n this.context = Object.freeze({\n chainId: this.deployment.chainId,\n protocolAddress: this.deployment.protocol.address,\n });\n Object.freeze(this);\n }\n\n /** Load the selected deployment and verify its contract against Chain RPC before returning. */\n static async fromRpc(\n rpc: Pick<ProtocolRpcClient, \"getDeployment\">,\n provider: Provider,\n options: { signal?: AbortSignal } = {}\n ): Promise<Protocol> {\n const chainId = (await provider.getNetwork()).chainId;\n if (typeof chainId !== \"bigint\" || chainId <= 0n || chainId >= 1n << 64n)\n throw new Error(\"invalid protocol chainId\");\n const deployment = await rpc.getDeployment(\n chainId,\n options.signal ? { signal: options.signal } : {}\n );\n const protocol = new Protocol({ deployment });\n if (protocol.context.chainId !== chainId) throw new Error(\"RPC deployment chain mismatch\");\n await protocol.validateDeployment(provider);\n return protocol;\n }\n\n async validateDeployment(\n connection:\n | Provider\n | (Pick<ChainReader, \"getChainId\" | \"getCode\"> & {\n getProtocolVersion?(address: Address): Promise<bigint>;\n getProtocolAddressRegistry?(address: Address): Promise<Address>;\n })\n ): Promise<void> {\n const reader =\n \"getNetwork\" in connection\n ? {\n getChainId: async () => (await connection.getNetwork()).chainId,\n getCode: async (address: Address) =>\n (await connection.getCode(address)) as Hex,\n getProtocolAddressRegistry: async (address: Address) =>\n getAddress(\n await new Contract(\n address,\n [\"function addressRegistry() view returns (address)\"],\n connection\n ).getFunction(\"addressRegistry\")()\n ) as Address,\n getProtocolVersion: async (address: Address) =>\n BigInt(\n await new Contract(\n address,\n [\"function VERSION() view returns (uint256)\"],\n connection\n ).getFunction(\"VERSION\")()\n ),\n }\n : connection;\n if ((await reader.getChainId()) !== this.context.chainId)\n throw new Error(\"deployment chain mismatch\");\n const code = await reader.getCode(this.context.protocolAddress);\n if (\n !/^0x(?:[0-9a-fA-F]{2})+$/.test(code) ||\n (keccak256(code) as Hex) !== this.deployment.protocol.runtimeCodeHash\n )\n throw new Error(\"protocol runtime code profile mismatch\");\n if (\n reader.getProtocolVersion &&\n (await reader.getProtocolVersion(this.context.protocolAddress)) !== 1n\n )\n throw new Error(\"unsupported onchain protocol version\");\n const registry = this.deployment.registry;\n if (registry) {\n if (!reader.getProtocolAddressRegistry)\n throw new Error(\"registry binding reader capability is missing\");\n if (\n getAddress(\n await reader.getProtocolAddressRegistry(this.context.protocolAddress)\n ) !== getAddress(registry.address)\n )\n throw new Error(\"protocol registry binding mismatch\");\n const registryCode = await reader.getCode(registry.address);\n if (\n !/^0x(?:[0-9a-fA-F]{2})+$/.test(registryCode) ||\n keccak256(registryCode) !== registry.runtimeCodeHash\n )\n throw new Error(\"registry runtime code profile mismatch\");\n }\n }\n\n aggregate(request: Omit<BuildTransactAggregateCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...buildTransactAggregateCalldata({ ...request, context: this.context }),\n };\n }\n\n /** Build an operation context for one asset within this same deployment. */\n forToken(tokenAddress: Address): TokenProtocol {\n return new TokenProtocol(\n { ...this.context, tokenAddress: getAddress(tokenAddress) as Hex },\n { expectedRuntimeCodeHash: this.deployment.protocol.runtimeCodeHash }\n );\n }\n}\n","import { AbiCoder, Interface, keccak256, ParamType } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport { invisiProtocolAbi, type TransactRequest } from \"../contracts/index\";\nimport {\n dense,\n fundingFields,\n getEIP712Domain,\n normalizeFunding,\n validateFundingSubmission,\n word,\n type DeploymentContext,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nimport { normalizeTransactRequest, selectTransactCapacity, transactPublicInputs } from \"./request\";\n\nexport interface BuildTransactAggregateCalldataParams {\n context: DeploymentContext & { now?: bigint };\n proof: Hex;\n requests: readonly TransactRequest[];\n caller?: Address;\n}\n\nexport function buildTransactAggregateCalldata(p: BuildTransactAggregateCalldataParams) {\n if (![4, 8, 12].includes(dense(p.requests, \"requests\").length))\n throw new Error(\"aggregate requires 4, 8 or 12 requests\");\n const requests = p.requests.map((request) => {\n const r = normalizeTransactRequest(\n { ...p.context, tokenAddress: request.params.token },\n request.params,\n request.deliveries,\n request.funding\n );\n if (r.capacity !== 14) throw new Error(\"aggregate supports only capacity 14\");\n validateFundingSubmission(r.funding, p.caller, p.context.now);\n return {\n ...request,\n params: { ...request.params, feeRecipient: r.feeRecipient, feeAmount: r.feeAmount },\n };\n });\n return {\n data: new Interface(\n invisiProtocolAbi.filter(\n (item) =>\n item.type === \"function\" &&\n item.name === \"transact\" &&\n item.inputs[1]?.type === \"tuple[]\"\n )\n ).encodeFunctionData(\"transact\", [p.proof, requests]) as Hex,\n capacity: 14 as const,\n };\n}\n\nexport type AggregateMemberInput = Pick<TransactRequest, \"params\" | \"deliveries\"> & {\n funding?: FundingInput;\n};\n\n/** Atomic aggregate funding binds the member statement rather than the aggregate proof bytes. */\nexport function aggregateMemberRequestHash(c: TransactionContext, r: AggregateMemberInput) {\n const capacity = selectTransactCapacity(\n r.params.nullifiers.length,\n r.params.outputCommitments.length\n );\n if (capacity !== 14) throw new Error(\"aggregate supports only capacity 14\");\n return keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\"bytes32\", \"uint256\", \"bytes32[]\"].map((parameter) => ParamType.from(parameter)),\n [\n keccak256(new TextEncoder().encode(\"InvisiAtomicBatchMemberV1\")),\n BigInt(capacity),\n transactPublicInputs(c, r.params, r.deliveries, r.funding),\n ]\n ) as Hex\n ) as Hex;\n}\n\n/** Router adapter business words (58 per member), not the aggregate circuit statement. */\nexport function aggregatePublicInputs(\n c: TransactionContext,\n requests: readonly AggregateMemberInput[]\n) {\n if (![4, 8, 12].includes(dense(requests, \"requests\").length))\n throw new Error(\"aggregate requires 4, 8 or 12 requests\");\n return requests.flatMap((r) => {\n const context = { ...c, tokenAddress: r.params.token };\n aggregateMemberRequestHash(context, r);\n return [word(14n), ...transactPublicInputs(context, r.params, r.deliveries, r.funding)];\n });\n}\n\nexport function encodeAggregateFundingTypedData(c: TransactionContext, r: AggregateMemberInput) {\n const f = normalizeFunding(r.funding);\n if (f.amount === 0n) throw new Error(\"funding authorization requires positive deposit\");\n return {\n domain: getEIP712Domain(c),\n primaryType: \"FundTransact\" as const,\n types: { FundTransact: fundingFields },\n message: {\n requestHash: aggregateMemberRequestHash(c, r),\n payer: f.payer,\n amount: f.amount,\n sigNonce: f.sigNonce,\n deadline: f.deadline,\n },\n };\n}\n","import { keccak256 } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\n\nimport { MissingCapabilityError } from \"@invisi-labs/core\";\nimport {\n buildCreateCreditCalldata,\n type BuildCreateCreditCalldataParams,\n} from \"../credit/credit-create\";\nimport {\n buildCancelCreditCalldata,\n buildCreditDrawCalldata,\n buildTopUpCreditCalldata,\n type BuildCancelCreditCalldataParams,\n type BuildCreditDrawCalldataParams,\n type BuildTopUpCreditCalldataParams,\n} from \"../credit/credit-lifecycle\";\nimport {\n buildTransactAggregateCalldata,\n type BuildTransactAggregateCalldataParams,\n} from \"../funds/aggregate\";\nimport { buildTransactCalldata, type BuildTransactCalldataParams } from \"../funds/calldata\";\nimport { buildShieldCalldata, type BuildShieldCalldataParams } from \"../funds/shield\";\nimport type { ChainReader } from \"../interfaces\";\nimport { normalizeContext, type TransactionContext } from \"../validation\";\n\nexport interface TokenProtocolOptions {\n expectedRuntimeCodeHash?: Hex;\n}\n\n/** A token-specific operation binding within a multi-token deployment. Pure builders never sign or submit. */\nexport class TokenProtocol {\n readonly context: Readonly<TransactionContext>;\n readonly expectedRuntimeCodeHash: Hex | undefined;\n\n constructor(context: TransactionContext, options: TokenProtocolOptions = {}) {\n const normalized = normalizeContext(context);\n if (BigInt(normalized.protocolAddress) === 0n || BigInt(normalized.tokenAddress) === 0n) {\n throw new Error(\"deployment addresses must be nonzero\");\n }\n if (\n options.expectedRuntimeCodeHash &&\n !/^0x[0-9a-fA-F]{64}$/.test(options.expectedRuntimeCodeHash)\n ) {\n throw new Error(\"invalid runtime code hash\");\n }\n this.expectedRuntimeCodeHash = options.expectedRuntimeCodeHash?.toLowerCase() as\n Hex | undefined;\n this.context = Object.freeze(normalized);\n Object.freeze(this);\n }\n\n async validateDeployment(\n reader: Pick<ChainReader, \"getChainId\" | \"getCode\">,\n options: { requireRuntimeProfile?: boolean } = {}\n ): Promise<void> {\n if ((options.requireRuntimeProfile ?? true) && !this.expectedRuntimeCodeHash) {\n throw new MissingCapabilityError(\"trusted deployment profile\");\n }\n if ((await reader.getChainId()) !== this.context.chainId) {\n throw new Error(\"deployment chain mismatch\");\n }\n const code = await reader.getCode(this.context.protocolAddress);\n if (\n !/^0x(?:[0-9a-fA-F]{2})+$/.test(code) ||\n (this.expectedRuntimeCodeHash &&\n (keccak256(code) as Hex) !== this.expectedRuntimeCodeHash)\n ) {\n throw new Error(\"deployment runtime code profile mismatch\");\n }\n const tokenCode = await reader.getCode(this.context.tokenAddress);\n if (!/^0x(?:[0-9a-fA-F]{2})+$/.test(tokenCode)) {\n throw new Error(\"token address must have contract code\");\n }\n }\n\n transact(request: Omit<BuildTransactCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...buildTransactCalldata({ ...request, context: this.context }),\n };\n }\n\n aggregate(request: Omit<BuildTransactAggregateCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...buildTransactAggregateCalldata({ ...request, context: this.context }),\n };\n }\n\n async shield(request: Omit<BuildShieldCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...(await buildShieldCalldata({ ...request, context: this.context })),\n };\n }\n\n createCredit(request: Omit<BuildCreateCreditCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...buildCreateCreditCalldata({ ...request, context: this.context }),\n };\n }\n\n drawCredit(request: Omit<BuildCreditDrawCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...buildCreditDrawCalldata({ ...request, context: this.context }),\n };\n }\n\n cancelCredit(request: Omit<BuildCancelCreditCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...buildCancelCreditCalldata({ ...request, context: this.context }),\n };\n }\n\n topUpCredit(request: Omit<BuildTopUpCreditCalldataParams, \"context\">) {\n return {\n to: this.context.protocolAddress,\n value: 0n,\n ...buildTopUpCreditCalldata({ ...request, context: this.context }),\n };\n }\n}\n","import { Interface } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport { invisiProtocolAbi, type Delivery, type TransactRequest } from \"../contracts/index\";\nimport {\n validateFundingSubmission,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nimport { normalizeTransactRequest, TransactRequestParams } from \"./request\";\n\nexport interface BuildTransactCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: TransactRequestParams;\n deliveries: readonly Delivery[];\n funding?: FundingInput;\n caller?: Address;\n}\n\nexport function buildTransactCalldata(p: BuildTransactCalldataParams) {\n const r = normalizeTransactRequest(p.context, p.params, p.deliveries, p.funding);\n validateFundingSubmission(r.funding, p.caller, p.context.now);\n const request: TransactRequest = {\n params: {\n token: r.tokenAddress,\n sources: r.sources,\n nullifiers: r.nullifiers,\n outputCommitments: r.outputCommitments,\n withdrawalAddress: r.withdrawalAddress,\n withdrawalAmount: r.withdrawalAmount,\n deadline: r.deadline,\n feeRecipient: r.feeRecipient,\n feeAmount: r.feeAmount,\n },\n deliveries: p.deliveries,\n funding: r.funding,\n };\n const abi = invisiProtocolAbi.filter(\n (item) =>\n item.type === \"function\" &&\n item.name === \"transact\" &&\n item.inputs.length === 2 &&\n item.inputs[1]?.type === \"tuple\"\n );\n const data = new Interface(abi).encodeFunctionData(\"transact\", [p.proof, request]) as Hex;\n return { data, capacity: r.capacity, approveAmount: r.depositAmount };\n}\n","import { computeNoteCommitment } from \"@invisi-labs/core\";\nimport { AbiCoder, getAddress, Interface, keccak256, ParamType } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport {\n invisiProtocolAbi,\n type Delivery,\n type ShieldOutput,\n type ShieldParams,\n} from \"../contracts/index\";\nimport { normalizeFee } from \"../fees/fee\";\nimport {\n checkDeadline,\n deliveriesHash,\n dense,\n field,\n fundingFields,\n getEIP712Domain,\n known,\n normalizeContext,\n normalizeFunding,\n normalizeOpaqueDelivery,\n notes,\n uint,\n validateFundingSubmission,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\n\nexport interface BuildShieldCalldataParams {\n context: TransactionContext;\n params: ShieldParams;\n outputs: readonly ShieldOutput[];\n deliveries: readonly Delivery[];\n funding: FundingInput;\n caller?: Address;\n}\n\nexport async function validateShieldRequest(p: BuildShieldCalldataParams) {\n normalizeContext(p.context);\n if ((getAddress(p.params.token) as Hex) !== (getAddress(p.context.tokenAddress) as Hex))\n throw new Error(\"request token mismatch\");\n known(p.params, [\"token\", \"outputCommitments\", \"deadline\", \"feeRecipient\", \"feeAmount\"]);\n checkDeadline(p.context, p.params.deadline);\n const outputs = dense(p.outputs, \"outputs\"),\n commitments = notes(p.params.outputCommitments, \"outputCommitments\"),\n cs = dense(p.deliveries, \"deliveries\"),\n f = normalizeFunding(p.funding);\n if (\n outputs.length < 1 ||\n outputs.length > 10 ||\n commitments.length !== outputs.length ||\n cs.length !== outputs.length\n )\n throw new Error(\"shield requires 1..10 outputs and matching deliveries\");\n let total = 0n;\n for (const [i, o] of outputs.entries()) {\n known(o, [\"identity\", \"amount\"], \"output\");\n uint(o.amount, 128, \"amount\");\n if (o.amount === 0n) throw new Error(\"amount must be positive\");\n field(o.identity);\n normalizeOpaqueDelivery(cs[i]!, { allowEmpty: true });\n if (\n (await computeNoteCommitment(\n p.context.chainId,\n o.identity,\n BigInt(p.context.tokenAddress),\n o.amount\n )) !== commitments[i]\n )\n throw new Error(\"output commitment mismatch\");\n total += o.amount;\n }\n if (total + normalizeFee(p.params).feeAmount !== f.amount)\n throw new Error(\"funding must equal output total plus fee\");\n return f;\n}\n\nexport async function encodeShieldFundingTypedData(p: BuildShieldCalldataParams) {\n const f = await validateShieldRequest(p);\n return {\n domain: getEIP712Domain(p.context),\n primaryType: \"FundShield\" as const,\n types: { FundShield: fundingFields },\n message: {\n requestHash: shieldFundingRequestHash(p.params, p.outputs, p.deliveries),\n payer: f.payer,\n amount: f.amount,\n sigNonce: f.sigNonce,\n deadline: f.deadline,\n },\n };\n}\n\nexport async function buildShieldCalldata(p: BuildShieldCalldataParams) {\n const f = await validateShieldRequest(p);\n validateFundingSubmission(f, p.caller, p.context.now);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"shield\", [\n { ...p.params, ...normalizeFee(p.params) },\n p.outputs,\n p.deliveries,\n f,\n ]) as Hex,\n approveAmount: f.amount,\n };\n}\n\nexport function shieldFundingRequestHash(\n params: ShieldParams,\n outputs: readonly ShieldOutput[],\n cs: readonly Delivery[]\n) {\n const outputHash = keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\"(bytes32 identity,uint256 amount)[]\"].map((parameter) => ParamType.from(parameter)),\n [outputs]\n ) as Hex\n ) as Hex;\n return keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\n \"bytes32\",\n \"(address token,bytes32[] outputCommitments,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n \"bytes32\",\n \"bytes32\",\n ].map((parameter) => ParamType.from(parameter)),\n [\n keccak256(new TextEncoder().encode(\"InvisiShield\")),\n { ...params, ...normalizeFee(params) },\n outputHash,\n deliveriesHash(cs),\n ]\n ) as Hex\n ) as Hex;\n}\n","import { getAddress, keccak256 } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\n\nimport {\n MissingCapabilityError,\n ReceivingAddress,\n type ReceivingKeyLookup,\n} from \"@invisi-labs/core\";\nimport {\n RegistrationOperation,\n type RegistrationPreparation,\n type RegistryReader,\n} from \"./RegistrationOperation\";\nimport {\n buildRegistrationCalldata,\n registrationDigest,\n registrationTypedData,\n type AddressRegistration,\n type RegistrationOptions,\n type RegistryContext,\n} from \"./registry\";\n\nexport interface AddressRegistryOptions {\n lookup?: ReceivingKeyLookup;\n expectedRuntimeCodeHash?: Hex;\n}\n\n/** Independent registry deployment and nonce domain, selected by the application. */\nexport class AddressRegistry {\n readonly context: Readonly<RegistryContext>;\n readonly #lookup: ReceivingKeyLookup | undefined;\n readonly expectedRuntimeCodeHash: Hex | undefined;\n\n constructor(context: RegistryContext, options: AddressRegistryOptions = {}) {\n if (\n typeof context.chainId !== \"bigint\" ||\n context.chainId < 0n ||\n context.chainId >= 1n << 64n ||\n BigInt(getAddress(context.registryAddress) as Hex) === 0n\n ) {\n throw new Error(\"invalid registry context\");\n }\n this.context = Object.freeze({\n ...context,\n registryAddress: getAddress(context.registryAddress) as Hex,\n });\n this.#lookup = options.lookup;\n this.expectedRuntimeCodeHash = options.expectedRuntimeCodeHash?.toLowerCase() as\n Hex | undefined;\n if (\n this.expectedRuntimeCodeHash &&\n !/^0x[0-9a-f]{64}$/.test(this.expectedRuntimeCodeHash)\n ) {\n throw new Error(\"invalid registry runtime profile\");\n }\n Object.freeze(this);\n }\n\n async validateDeployment(\n reader: Pick<RegistryReader, \"getChainId\" | \"getCode\">\n ): Promise<void> {\n if (!this.expectedRuntimeCodeHash) {\n throw new MissingCapabilityError(\"trusted registry deployment profile\");\n }\n if ((await reader.getChainId()) !== this.context.chainId) {\n throw new Error(\"registry chain mismatch\");\n }\n const code = await reader.getCode(this.context.registryAddress);\n if (\n !/^0x(?:[0-9a-fA-F]{2})+$/.test(code) ||\n (keccak256(code) as Hex) !== this.expectedRuntimeCodeHash\n ) {\n throw new Error(\"registry runtime profile mismatch\");\n }\n }\n\n prepareRegistration(options: RegistrationPreparation): Promise<RegistrationOperation> {\n return RegistrationOperation.prepare(this, options);\n }\n\n async resolve(address: string): Promise<string> {\n const receiving = ReceivingAddress.parse(address);\n if (receiving.kind === \"short\" && !this.#lookup) {\n throw new MissingCapabilityError(\"registry reader\");\n }\n return (await receiving.resolve(this.#lookup)).toString();\n }\n\n typedData(registration: AddressRegistration, options?: RegistrationOptions) {\n return registrationTypedData(this.context, registration, options);\n }\n\n digest(registration: AddressRegistration, options?: RegistrationOptions) {\n return registrationDigest(this.context, registration, options);\n }\n\n buildCall(\n registration: AddressRegistration,\n signature: `0x${string}`,\n options?: RegistrationOptions\n ) {\n return buildRegistrationCalldata(this.context, registration, signature, options);\n }\n}\n","import type { PublicWallet } from \"@invisi-labs/core\";\nimport { Interface, getBytes, hexlify, verifyTypedData } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\n\nimport { ReceivingAddress, createSigningRequest } from \"@invisi-labs/core\";\nimport { invisiAddressRegistryAbi } from \"../contracts/index\";\nimport type { CanonicalBlock, ChainReader, TransactionCall } from \"../interfaces\";\nimport type { AddressRegistry } from \"./AddressRegistry\";\nimport {\n buildRegistrationCalldata,\n registrationDigest,\n registrationTypedData,\n type AddressRegistration,\n type RegistryContext,\n} from \"./registry\";\n\nexport interface RegistryReader extends Pick<\n ChainReader,\n \"getChainId\" | \"getCode\" | \"getBlock\" | \"getLatestBlockNumber\" | \"getTransaction\" | \"getReceipt\"\n> {\n /** Validate arbitrary ERC-1271 bytes for a contract owner; transport errors propagate. */\n isValidRegistrationSignature?(owner: Address, digest: Hex, signature: Hex): Promise<boolean>;\n getRegistryNonce(\n context: RegistryContext,\n ownerAddress: Hex,\n block: CanonicalBlock\n ): Promise<bigint>;\n}\n\nexport interface RegistrationPreparation {\n wallet: PublicWallet;\n reader: RegistryReader;\n deadline?: bigint;\n update?: boolean;\n}\n\nexport type RegistrationStatus =\n | \"prepared\"\n | \"ready\"\n | \"submitted\"\n | \"confirmed\"\n | \"uncertain\"\n | \"failed\"\n | \"expired\"\n | \"reorged\";\n\ninterface RegistrationPlan {\n id: string;\n context: RegistryContext;\n registration: AddressRegistration;\n update: boolean;\n}\n\nfunction check(ok: unknown, message: string): asserts ok {\n if (!ok) {\n throw new Error(message);\n }\n}\n\nexport class RegistrationOperation {\n readonly #registry: AddressRegistry;\n readonly #runtime: RegistrationPreparation;\n readonly #plan: RegistrationPlan;\n readonly #signature: Hex | undefined;\n readonly #hash: Hex | undefined;\n readonly #anchor: CanonicalBlock | undefined;\n readonly status: RegistrationStatus;\n\n private constructor(\n registry: AddressRegistry,\n runtime: RegistrationPreparation,\n plan: RegistrationPlan,\n status: RegistrationStatus,\n signature?: Hex,\n hash?: Hex,\n anchor?: CanonicalBlock\n ) {\n this.#registry = registry;\n this.#runtime = { ...runtime };\n this.#plan = structuredClone(plan);\n this.status = status;\n this.#signature = signature;\n this.#hash = hash;\n this.#anchor = anchor ? { ...anchor } : undefined;\n Object.freeze(this);\n }\n\n static async prepare(\n registry: AddressRegistry,\n options: RegistrationPreparation\n ): Promise<RegistrationOperation> {\n const runtime = { ...options };\n const update = options.update ?? false;\n check(typeof update === \"boolean\", \"update must be boolean\");\n await registry.validateDeployment(runtime.reader);\n const block = await runtime.reader.getBlock(await runtime.reader.getLatestBlockNumber());\n const context = { ...registry.context, now: block.timestamp };\n const nonce = await runtime.reader.getRegistryNonce(\n context,\n runtime.wallet.ownerAddress,\n block\n );\n check(\n typeof nonce === \"bigint\" && nonce >= 0n && nonce < (1n << 64n) - 1n,\n \"invalid or exhausted registry nonce\"\n );\n check(\n update ? nonce > 0n : nonce === 0n,\n update ? \"wallet is not registered\" : \"wallet is already registered; prepare an update\"\n );\n const address = ReceivingAddress.parse(await registry.resolve(runtime.wallet.getAddress()));\n const keys = address.getReceivingKeys();\n const registration: AddressRegistration = {\n ownerAddress: runtime.wallet.ownerAddress,\n keys: {\n viewingPublicKey: hexlify(keys.viewingPublicKey) as Hex,\n clueKey: hexlify(keys.clueKey) as Hex,\n },\n nonce,\n deadline: options.deadline ?? block.timestamp + 300n,\n };\n registrationTypedData(context, registration, { update, expectedNonce: nonce });\n check(\n (await runtime.reader.getBlock(block.number)).hash === block.hash,\n \"canonical registry block changed while preparing\"\n );\n return new RegistrationOperation(\n registry,\n runtime,\n { id: crypto.randomUUID(), context, registration, update },\n \"prepared\"\n );\n }\n\n get id(): string {\n return this.#plan.id;\n }\n\n preview() {\n return {\n id: this.id,\n status: this.status,\n chainId: this.#plan.context.chainId,\n registryAddress: this.#plan.context.registryAddress,\n ...structuredClone(this.#plan.registration),\n update: this.#plan.update,\n };\n }\n\n /** Export portable EIP-712 data for external signing. */\n async exportRegistrationAuthorization(options: { signal?: AbortSignal } = {}) {\n check(this.status === \"prepared\", \"registry operation is not awaiting authorization\");\n options.signal?.throwIfAborted();\n await this.validateFreshness();\n options.signal?.throwIfAborted();\n return createSigningRequest(this.typedData());\n }\n\n /** Validate and attach an independently obtained EOA or ERC-1271 signature. */\n async withSignature(\n signature: string,\n options: { signal?: AbortSignal } = {}\n ): Promise<RegistrationOperation> {\n check(this.status === \"prepared\", \"registry operation is not awaiting authorization\");\n options.signal?.throwIfAborted();\n await this.validateFreshness();\n options.signal?.throwIfAborted();\n check(\n /^0x(?:[a-fA-F0-9]{2})+$/.test(signature),\n \"registry signature must be nonempty hexadecimal bytes\"\n );\n const p = this.#plan;\n const owner = p.registration.ownerAddress as Address;\n // Match the protocol's SignatureChecker: canonical ECDSA first, including\n // delegated EOAs with code, then the contract-owner ERC-1271 fallback.\n let valid = false;\n try {\n const bytes = getBytes(signature);\n const typed = this.typedData();\n valid =\n bytes.length === 65 &&\n (bytes[64] === 27 || bytes[64] === 28) &&\n BigInt(verifyTypedData(typed.domain, typed.types, typed.message, signature)) ===\n BigInt(owner);\n } catch {\n valid = false;\n }\n if (!valid) {\n const code = await this.#runtime.reader.getCode(owner);\n check(/^0x(?:[a-fA-F0-9]{2})*$/.test(code), \"invalid owner contract code\");\n check(code !== \"0x\", \"invalid EOA registry signature\");\n const verify = this.#runtime.reader.isValidRegistrationSignature;\n check(verify, \"ERC-1271 registry signature verification capability is missing\");\n check(\n await verify.call(\n this.#runtime.reader,\n owner,\n registrationDigest(p.context, p.registration, { update: p.update }),\n signature as Hex\n ),\n \"invalid ERC-1271 registry signature\"\n );\n }\n options.signal?.throwIfAborted();\n return new RegistrationOperation(\n this.#registry,\n this.#runtime,\n this.#plan,\n \"ready\",\n signature as Hex\n );\n }\n\n /** Empty signatures require the transaction sender to be the wallet owner. */\n async authorizeDirect(): Promise<RegistrationOperation> {\n check(this.status === \"prepared\", \"registry operation is not awaiting authorization\");\n await this.validateFreshness();\n return new RegistrationOperation(this.#registry, this.#runtime, this.#plan, \"ready\", \"0x\");\n }\n\n typedData() {\n const p = this.#plan;\n return registrationTypedData(p.context, p.registration, {\n update: p.update,\n expectedNonce: p.registration.nonce,\n });\n }\n\n private call(): TransactionCall {\n check(this.#signature !== undefined, \"registry signature is missing\");\n const p = this.#plan;\n const result = buildRegistrationCalldata(p.context, p.registration, this.#signature, {\n update: p.update,\n expectedNonce: p.registration.nonce,\n });\n return { to: result.to, data: result.callData, value: result.value };\n }\n\n async exportTransaction(): Promise<TransactionCall> {\n check(\n this.#signature !== undefined && this.status !== \"prepared\",\n \"registry operation is not ready\"\n );\n await this.validateFreshness();\n return this.call();\n }\n\n private async validateFreshness(): Promise<void> {\n await this.#registry.validateDeployment(this.#runtime.reader);\n const block = await this.#runtime.reader.getBlock(\n await this.#runtime.reader.getLatestBlockNumber()\n );\n const p = this.#plan;\n check(block.timestamp <= p.registration.deadline, \"registry operation has expired\");\n check(\n (await this.#runtime.reader.getRegistryNonce(\n p.context,\n p.registration.ownerAddress,\n block\n )) === p.registration.nonce,\n \"registry nonce changed; prepare again\"\n );\n check(\n (await this.#runtime.reader.getBlock(block.number)).hash === block.hash,\n \"canonical registry block changed during authorization\"\n );\n }\n\n /** Associate a signed/broadcast transaction; ethers owns sending and receipt waiting. */\n trackTransaction(transactionHash: string): RegistrationOperation {\n check(/^0x[a-fA-F0-9]{64}$/.test(transactionHash), \"invalid registry transaction hash\");\n check(\n this.#signature !== undefined && [\"ready\", \"uncertain\"].includes(this.status),\n \"registry operation is not ready\"\n );\n return new RegistrationOperation(\n this.#registry,\n this.#runtime,\n this.#plan,\n \"uncertain\",\n this.#signature,\n transactionHash as Hex\n );\n }\n\n async reconcile(\n options: { transactionHash?: Hex; signal?: AbortSignal } = {}\n ): Promise<RegistrationOperation> {\n options.signal?.throwIfAborted();\n const { reader } = this.#runtime;\n const p = this.#plan;\n await this.#registry.validateDeployment(reader);\n if (\n this.#anchor &&\n (await reader.getBlock(this.#anchor.number)).hash !== this.#anchor.hash\n ) {\n return new RegistrationOperation(\n this.#registry,\n this.#runtime,\n p,\n \"reorged\",\n this.#signature,\n this.#hash\n );\n }\n const hash = options.transactionHash ?? this.#hash;\n const receipt = hash ? await reader.getReceipt(hash) : null;\n if (receipt) {\n check(\n receipt.transactionHash === hash &&\n (await reader.getBlock(receipt.block.number)).hash === receipt.block.hash,\n \"registry receipt is not canonical\"\n );\n const transaction = await reader.getTransaction(hash!);\n const call = this.call();\n check(\n transaction &&\n transaction.transactionHash === hash &&\n transaction.to.toLowerCase() === call.to.toLowerCase() &&\n transaction.data.toLowerCase() === call.data.toLowerCase() &&\n transaction.value === 0n &&\n (this.#signature !== \"0x\" ||\n BigInt(transaction.from) === BigInt(p.registration.ownerAddress)),\n \"registry transaction differs from frozen request\"\n );\n check(\n receipt.status === \"success\" || receipt.status === \"reverted\",\n \"registry execution status is missing\"\n );\n if (receipt.status === \"success\") {\n const found = receipt.logs.some((log) => {\n if (\n log.address.toLowerCase() !== p.context.registryAddress.toLowerCase() ||\n log.transactionHash !== hash\n ) {\n return false;\n }\n try {\n const event = ((decoded) => ({\n eventName: decoded!.name,\n args: decoded!.args.toObject(),\n }))(\n new Interface(invisiAddressRegistryAbi).parseLog({\n data: log.data,\n topics: log.topics as never,\n })\n );\n return (\n event.eventName === \"ReceivingKeysSet\" &&\n BigInt(event.args.walletIdentity) ===\n BigInt(p.registration.ownerAddress) &&\n event.args.viewingPublicKey.toLowerCase() ===\n p.registration.keys.viewingPublicKey.toLowerCase() &&\n event.args.clueKey.toLowerCase() ===\n p.registration.keys.clueKey.toLowerCase() &&\n event.args.nextNonce === p.registration.nonce + 1n\n );\n } catch {\n return false;\n }\n });\n check(found, \"registry receipt has no matching key update event\");\n check(\n (await reader.getBlock(receipt.block.number)).hash === receipt.block.hash,\n \"registry block changed during confirmation\"\n );\n options.signal?.throwIfAborted();\n return new RegistrationOperation(\n this.#registry,\n this.#runtime,\n p,\n \"confirmed\",\n this.#signature,\n hash,\n receipt.block\n );\n }\n }\n const head = await reader.getBlock(await reader.getLatestBlockNumber());\n const nonce = await reader.getRegistryNonce(p.context, p.registration.ownerAddress, head);\n check(\n (await reader.getBlock(head.number)).hash === head.hash,\n \"canonical registry block changed during reconciliation\"\n );\n return new RegistrationOperation(\n this.#registry,\n this.#runtime,\n p,\n head.timestamp > p.registration.deadline\n ? \"expired\"\n : nonce !== p.registration.nonce\n ? \"failed\"\n : \"uncertain\",\n this.#signature,\n hash\n );\n }\n\n toJSON() {\n return {\n id: this.id,\n kind: this.#plan.update ? \"update-receiving-keys\" : \"register-receiving-keys\",\n status: this.status,\n };\n }\n\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.toJSON();\n }\n}\n","import {\n Contract,\n Interface,\n TypedDataEncoder,\n getAddress,\n getBytes,\n hexlify,\n isHexString,\n toBeHex,\n type ContractRunner,\n} from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\n\nimport { ReceivingAddress, decodeAddress, type ReceivingKeyLookup } from \"@invisi-labs/core\";\nimport { invisiAddressRegistryAbi } from \"../contracts/index\";\n\nexport interface RegistryContext {\n chainId: bigint;\n registryAddress: Address;\n /** Optional explicit wall-clock value in seconds. Equality with deadline is valid. */\n now?: bigint;\n}\nexport interface RegistryReceivingKeys {\n viewingPublicKey: Hex;\n clueKey: Hex;\n}\nexport interface AddressRegistration {\n /** Nonzero EVM owner: 20 bytes or canonical zero-padded bytes32. */\n ownerAddress: Hex;\n keys: RegistryReceivingKeys;\n /** The current registry nonce expected for this operation. */\n nonce: bigint;\n deadline: bigint;\n}\nexport interface RegistrationOptions {\n update?: boolean;\n /** Check a separately obtained current nonce before authorizing or encoding. */\n expectedNonce?: bigint;\n}\nexport interface RegistrationCalldata {\n to: Address;\n callData: Hex;\n value: 0n;\n}\nconst MAX_NONCE = (1n << 64n) - 1n;\nfunction uint64(value: bigint, name: string): bigint {\n if (typeof value !== \"bigint\" || value < 0n || value > MAX_NONCE)\n throw new RangeError(`${name} must be uint64`);\n return value;\n}\nfunction hexBytes(value: Hex, length: number): Uint8Array {\n if (typeof value !== \"string\" || !isHexString(value) || value.length !== 2 + length * 2)\n throw new Error(`Expected ${length} hexadecimal bytes`);\n return getBytes(value);\n}\nfunction normalizeKeys(ownerAddress: Hex, keys: RegistryReceivingKeys): RegistryReceivingKeys {\n const decoded = decodeAddress(\n ReceivingAddress.from({\n ownerAddress,\n viewingPublicKey: hexBytes(keys.viewingPublicKey, 33),\n clueKey: hexBytes(keys.clueKey, 32),\n }).toString()\n );\n if (decoded.kind !== \"long\") throw new Error(\"Expected full receiving address\");\n return {\n viewingPublicKey: hexlify(decoded.viewingPublicKey) as Hex,\n clueKey: hexlify(decoded.clueKey) as Hex,\n };\n}\nfunction normalize(\n context: RegistryContext,\n registration: AddressRegistration,\n options: RegistrationOptions\n) {\n uint64(context.chainId, \"chainId\");\n const registryAddress = getAddress(context.registryAddress) as Hex;\n if (BigInt(registryAddress) === 0n) throw new Error(\"Registry address must be nonzero\");\n if (!/^0x(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$/.test(registration.ownerAddress))\n throw new Error(\"Wallet identity must be an EVM owner or padded bytes32\");\n // Converting to 20 bytes rejects nonzero high bits instead of truncating them.\n const ownerAddress = decodeAddress(\n ReceivingAddress.fromIdentity(\n toBeHex(BigInt(registration.ownerAddress), 20) as Hex\n ).toString()\n ).ownerAddress;\n const keys = normalizeKeys(ownerAddress, registration.keys);\n const nonce = uint64(registration.nonce, \"nonce\"),\n deadline = uint64(registration.deadline, \"deadline\");\n if (nonce === MAX_NONCE) throw new Error(\"Registry nonce exhausted\");\n if (options.update !== undefined && typeof options.update !== \"boolean\")\n throw new TypeError(\"update must be boolean\");\n if (!options.update && nonce !== 0n)\n throw new Error(\"Initial registration requires nonce zero\");\n if (\n options.expectedNonce !== undefined &&\n uint64(options.expectedNonce, \"expectedNonce\") !== nonce\n )\n throw new Error(\"Registry nonce mismatch\");\n if (context.now !== undefined && deadline < uint64(context.now, \"now\"))\n throw new Error(\"Registration expired\");\n return { registryAddress, registration: { ownerAddress, keys, nonce, deadline } };\n}\n\n/** Standard registry EIP-712 data, independent of private WalletAuthorization. */\nexport function registrationTypedData(\n context: RegistryContext,\n registration: AddressRegistration,\n options: RegistrationOptions = {}\n) {\n const { registryAddress, registration: r } = normalize(context, registration, options);\n const primaryType = options.update ? \"UpdateReceivingKeys\" : \"RegisterReceivingKeys\";\n return {\n domain: {\n name: \"InvisiAddressRegistry\",\n version: \"1\",\n chainId: context.chainId,\n verifyingContract: registryAddress,\n },\n primaryType,\n types: {\n [primaryType]: [\n { name: \"walletIdentity\", type: \"bytes32\" },\n { name: \"viewingPublicKey\", type: \"bytes\" },\n { name: \"clueKey\", type: \"bytes32\" },\n { name: \"nonce\", type: \"uint64\" },\n { name: \"deadline\", type: \"uint64\" },\n ],\n },\n message: {\n walletIdentity: toBeHex(BigInt(r.ownerAddress), 32),\n ...r.keys,\n nonce: r.nonce,\n deadline: r.deadline,\n },\n };\n}\nexport function registrationDigest(\n context: RegistryContext,\n registration: AddressRegistration,\n options: RegistrationOptions = {}\n): Hex {\n const typed = registrationTypedData(context, registration, options);\n return TypedDataEncoder.hash(typed.domain, typed.types, typed.message) as Hex;\n}\n/** Encode an owner call (empty signature) or an EIP-712 / ERC-1271 authorized relay. */\nexport function buildRegistrationCalldata(\n context: RegistryContext,\n registration: AddressRegistration,\n signature: Hex,\n options: RegistrationOptions = {}\n): RegistrationCalldata {\n const normalized = normalize(context, registration, options);\n if (typeof signature !== \"string\" || !isHexString(signature) || signature.length % 2 !== 0)\n throw new Error(\"Registration signature must be hexadecimal bytes\");\n return {\n to: normalized.registryAddress,\n value: 0n,\n callData: new Interface(invisiAddressRegistryAbi).encodeFunctionData(\n options.update ? \"updateKeys\" : \"registerKeys\",\n [\n {\n // The registry wire schema retains its deployed EIP-712/ABI field name.\n walletIdentity: toBeHex(BigInt(normalized.registration.ownerAddress), 32),\n keys: normalized.registration.keys,\n nonce: normalized.registration.nonce,\n deadline: normalized.registration.deadline,\n },\n signature,\n ]\n ) as Hex,\n };\n}\n\n/** Ethers runner used for registry contract reads. */\nexport type RegistryReadClient = ContractRunner;\n/** One receivingKeysOf query per short address; RPC failures propagate unchanged. */\nexport function createRegistryReceivingKeyLookup(\n client: RegistryReadClient,\n registryAddress: Address\n): ReceivingKeyLookup {\n const address = getAddress(registryAddress) as Hex;\n if (BigInt(address) === 0n) throw new Error(\"Registry address must be nonzero\");\n return async (ownerAddress) => {\n const identity = decodeAddress(\n ReceivingAddress.fromIdentity(ownerAddress).toString()\n ).ownerAddress;\n const [keys, nonce] = await new Contract(\n address,\n invisiAddressRegistryAbi,\n client\n ).getFunction(\"receivingKeysOf\")(toBeHex(BigInt(identity), 32));\n uint64(nonce, \"registry nonce\");\n const normalized = normalizeKeys(identity, keys);\n return {\n viewingPublicKey: getBytes(normalized.viewingPublicKey),\n clueKey: getBytes(normalized.clueKey),\n };\n };\n}\n","import {\n computeCreditCommitment,\n computeCreditSharedKeyHash,\n computeNoteCommitment,\n computeNoteIdentity,\n FIELD_MODULUS,\n} from \"@invisi-labs/core\";\n\nexport interface VerifyNoteCommitmentParams {\n ownerAddress: `0x${string}`;\n tokenAddress: `0x${string}`;\n amount: bigint;\n nonce: `0x${string}`;\n noteCommitment: `0x${string}`;\n chainId: bigint;\n}\n\nexport async function verifyNoteCommitment(params: VerifyNoteCommitmentParams): Promise<boolean> {\n const expected = await computeNoteCommitment(\n params.chainId,\n await computeNoteIdentity(BigInt(params.ownerAddress), BigInt(params.nonce)),\n BigInt(params.tokenAddress),\n params.amount\n );\n return BigInt(expected) === BigInt(params.noteCommitment);\n}\n\nexport interface VerifyCreditCommitmentParams extends Partial<\n import(\"@invisi-labs/core\").CreditPolicy\n> {\n chainId: bigint;\n spenderWalletIdentity: `0x${string}`;\n ownerWalletIdentity: `0x${string}`;\n spenderPayout: `0x${string}`;\n ownerPayout: `0x${string}`;\n tokenAddress: `0x${string}`;\n amount: bigint;\n nonce: bigint;\n expiry: bigint;\n creditSharedKey: bigint;\n /** Server-returned value to verify against the locally recomputed commitment. */\n creditCommitment: `0x${string}`;\n}\n\n/**\n * Hashes the received shared key locally, recomputes the Credit leaf and compares it to the\n * server-returned value. A mismatch means the server folded a wrong nonce\n * (or other parameter) — the caller MUST abort and not create a Credit.\n */\nexport async function verifyCreditCommitment(\n params: VerifyCreditCommitmentParams\n): Promise<boolean> {\n if (params.creditSharedKey <= 0n || params.creditSharedKey >= FIELD_MODULUS)\n throw new RangeError(\"creditSharedKey must be a nonzero canonical Field\");\n const expected = await computeCreditCommitment(\n params.chainId,\n params.spenderWalletIdentity,\n params.ownerWalletIdentity,\n BigInt(params.spenderPayout),\n BigInt(params.ownerPayout),\n BigInt(params.tokenAddress),\n params.amount,\n params.nonce,\n params.expiry,\n await computeCreditSharedKeyHash(params.creditSharedKey),\n params\n );\n return BigInt(expected) === BigInt(params.creditCommitment);\n}\n","import { Contract, getAddress, type ContractRunner } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\n\nimport { invisiFactoryAbi } from \"../contracts/index\";\n/**\n * Query the selected factory. The caller still verifies the returned deployment profile.\n * Calls `factory.getInstanceAddress(salt)` on-chain.\n */\nexport async function resolveInstanceAddress(\n client: ContractRunner,\n factoryAddress: `0x${string}`,\n salt: `0x${string}`\n): Promise<`0x${string}`> {\n const instance = await new Contract(\n getAddress(factoryAddress),\n invisiFactoryAbi,\n client\n ).getFunction(\"getInstanceAddress\")(salt);\n return getAddress(instance) as Hex;\n}\n"],"mappings":"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A,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QACR,OAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,MAAQ;AAAA,QAC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","names":["import_core","import_core","v","pad","import_core","import_ethers","import_ethers","import_core","import_ethers","import_core","creation","hashContext","import_core","pad","import_core","notes","pad","import_core","field","import_core","import_ethers","import_core","import_ethers","import_ethers","identity","pad","import_ethers","import_ethers","import_ethers","import_core","import_ethers","import_core","import_ethers","import_ethers","import_core","import_ethers","import_core","import_ethers","import_core","check","import_core","import_ethers"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/fees/fee.ts","../src/validation.ts","../src/credit/credit-create.ts","../src/contracts/abis/InvisiProtocol.ts","../src/contracts/abis/InvisiFactory.ts","../src/contracts/abis/InvisiAddressRegistry.ts","../src/credit/credit-lifecycle.ts","../src/note/aggregate-routes.ts","../src/note/aggregate.ts","../src/note/request.ts","../src/note/calldata.ts","../src/note/funding.ts","../src/note/abi-tuples.ts","../src/note/public-inputs.ts","../src/note/shield.ts","../src/registry/registry.ts","../src/verification/verify.ts","../src/factory/factory.ts","../src/release-identity.ts","../src/gas/data/documented-references.json","../src/gas/documented-reference.ts","../src/deployment.ts"],"sourcesContent":["export * from \"./credit/credit-create\";\nexport * from \"./credit/credit-lifecycle\";\nexport {\n AggregateMemberInput,\n BuildTransactAggregateCalldataParams,\n aggregateMemberRequestHash,\n aggregatePublicInputs,\n buildTransactAggregateCalldata,\n encodeAggregateFundingTypedData,\n} from \"./note/aggregate\";\nexport { BuildTransactCalldataParams, buildTransactCalldata } from \"./note/calldata\";\nexport {\n encodeTransactFundingTypedData,\n encodeTransactTypedData,\n transactFundingRequestHash,\n} from \"./note/funding\";\nexport { transactUserPublicInputs } from \"./note/public-inputs\";\nexport {\n TRANSACT_CAPACITIES,\n TransactCapacity,\n TransactRequestParams,\n normalizeTransactRequest,\n selectTransactCapacity,\n transactPublicInputs,\n} from \"./note/request\";\nexport {\n BuildShieldCalldataParams,\n buildShieldCalldata,\n encodeShieldFundingTypedData,\n shieldFundingRequestHash,\n validateShieldRequest,\n} from \"./note/shield\";\nexport * from \"./interfaces\";\nexport * from \"./registry/registry\";\nexport * from \"./validation\";\nexport * from \"./verification/verify\";\n\nexport * from \"./factory/factory\";\n\nexport { normalizeFee } from \"./fees/fee\";\nexport type * from \"./rpc-types\";\nexport { CIRCUIT_RELEASE } from \"./release-identity\";\nexport * from \"./gas/documented-reference\";\nexport * from \"./note/aggregate-routes\";\nexport * from \"./deployment\";\n","import { getAddress } from \"ethers\";\nimport type { Address } from \"../contracts/index\";\nimport { uint, ZERO_ADDRESS } from \"../validation\";\n/** Canonical optional public fee. Omitting both fields explicitly selects zero fee. */\nexport function normalizeFee(p: { feeRecipient?: Address; feeAmount?: bigint }) {\n const feeRecipient = getAddress(p.feeRecipient ?? ZERO_ADDRESS) as Address;\n const feeAmount = uint(p.feeAmount ?? 0n, 128, \"feeAmount\");\n if ((BigInt(feeRecipient) === 0n) !== (feeAmount === 0n))\n throw new Error(\"invalid fee context\");\n return { feeRecipient, feeAmount };\n}\n","import { MAX_CIPHERTEXT_BYTES } from \"@invisi-labs/primitives\";\nimport type { DeploymentContext } from \"./rpc-types\";\nimport {\n AbiCoder,\n dataLength,\n getAddress,\n isHexString,\n keccak256,\n ParamType,\n toBeHex,\n} from \"ethers\";\nimport type { Address, Delivery, FundingParams, Hex, InputSource } from \"./contracts/index\";\n\nexport type { DeploymentContext } from \"./rpc-types\";\nexport interface TransactionContext extends DeploymentContext {\n tokenAddress: Address;\n now?: bigint;\n /** Explicit chain timestamp used to bind Credit draw UTC periods. */\n timestamp?: bigint;\n}\nexport const FIELD_MODULUS =\n 21888242871839275222246405745257275088548364400416034343698204186575808495617n;\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\" as const;\nexport const ZERO_WORD = toBeHex(0n, 32) as Hex;\nexport const EMPTY_PERMIT = {\n deadline: 0n,\n v: 0,\n r: ZERO_WORD,\n s: ZERO_WORD,\n} as const;\nexport const EMPTY_FUNDING: FundingParams = {\n payer: ZERO_ADDRESS,\n amount: 0n,\n sigNonce: 0n,\n deadline: 0n,\n signature: \"0x\",\n permit: EMPTY_PERMIT,\n};\nexport type FundingInput = Partial<Omit<FundingParams, \"permit\">> & {\n permit?: FundingParams[\"permit\"];\n};\nexport function uint(v: bigint | number | string, bits: number, name = \"value\"): bigint {\n if (\n (typeof v !== \"bigint\" && typeof v !== \"number\" && typeof v !== \"string\") ||\n (typeof v === \"number\" && !Number.isSafeInteger(v))\n )\n throw new Error(`${name} must be an integer`);\n const n = BigInt(v);\n if (n < 0n || n >= 1n << BigInt(bits)) throw new Error(`${name} exceeds u${bits}`);\n return n;\n}\nexport function field(v: bigint | string, name = \"field\"): bigint {\n const n = uint(v, 256, name);\n if (n >= FIELD_MODULUS) throw new Error(`${name} is noncanonical field`);\n return n;\n}\nexport const word = (v: bigint | string): Hex =>\n toBeHex(typeof v === \"bigint\" ? v : BigInt(v), 32) as Hex;\nexport function dense<T>(v: readonly T[], name: string): readonly T[] {\n if (!Array.isArray(v)) throw new Error(`${name} must be array`);\n for (let i = 0; i < v.length; i++)\n if (!Object.hasOwn(v, i) || v[i] === undefined || v[i] === null)\n throw new Error(`${name} has missing or sparse entries`);\n return v;\n}\nexport function known(v: object, keys: readonly string[], name = \"params\") {\n if (\n !v ||\n typeof v !== \"object\" ||\n Array.isArray(v) ||\n Object.keys(v).some((k) => !keys.includes(k))\n )\n throw new Error(`${name} has unsupported fields`);\n}\nexport function notes(v: readonly Hex[], name: string) {\n const r = dense(v, name).map((v) => word(field(v, name)));\n if (r.some((v) => BigInt(v) === 0n) || new Set(r).size !== r.length)\n throw new Error(`duplicate or zero ${name}`);\n return r;\n}\nexport function envelope(v: Hex, length: number, version?: number, maximum = length): Hex {\n if (\n !isHexString(v) ||\n !/^0x(?:[a-fA-F0-9]{2})*$/.test(v) ||\n dataLength(v) < length ||\n dataLength(v) > maximum\n )\n throw new Error(`ciphertext must be ${length} bytes`);\n if (version !== undefined && Number.parseInt(v.slice(2, 4), 16) !== version)\n throw new Error(\"unsupported ciphertext envelope version\");\n return v;\n}\nexport function normalizeContext(c: TransactionContext) {\n return {\n ...c,\n chainId: uint(c.chainId, 64, \"chainId\"),\n protocolAddress: getAddress(c.protocolAddress) as Hex,\n tokenAddress: getAddress(c.tokenAddress) as Hex,\n };\n}\nexport function checkDeadline(c: TransactionContext, value: bigint) {\n const n = uint(value, 64, \"deadline\");\n if (c.now !== undefined && n < uint(c.now, 64, \"now\")) throw new Error(\"deadline has expired\");\n return n;\n}\nexport function normalizeSources(\n sources: readonly InputSource[],\n inputCount: number,\n capacity: number\n) {\n dense(sources, \"sources\");\n if (\n inputCount < 0 ||\n inputCount > capacity ||\n sources.length > inputCount ||\n (inputCount === 0 ? sources.length !== 0 : sources.length === 0)\n )\n throw new Error(\"source count must be 1..inputCount, or empty for zero inputs\");\n let previous = 0n;\n return sources.map((s) => {\n known(s, [\"treeId\", \"merkleRoot\"], \"source\");\n const treeId = uint(s.treeId, 64, \"treeId\"),\n merkleRoot = word(field(s.merkleRoot, \"merkleRoot\"));\n if (treeId === 0n || treeId <= previous || BigInt(merkleRoot) === 0n)\n throw new Error(\"sources must have positive roots and strictly ascending tree IDs\");\n previous = treeId;\n return { treeId, merkleRoot };\n });\n}\nexport const pad = (v: readonly bigint[], n: number): bigint[] => [\n ...v,\n ...(Array(n - v.length).fill(0n) as bigint[]),\n];\n/** Receipt/transport validation must not reject unrelated future wallet codecs. */\nexport function normalizeOpaqueDelivery(\n value: Delivery,\n options: { empty?: boolean; allowEmpty?: boolean } = {}\n): Delivery {\n known(value, [\"ciphertext\", \"clue\"], \"delivery\");\n if (options.empty) {\n if (value.ciphertext !== \"0x\" || value.clue !== \"0x\")\n throw new Error(\"absent output requires an empty delivery\");\n return { ciphertext: \"0x\", clue: \"0x\" };\n }\n if (options.allowEmpty && value.ciphertext === \"0x\" && value.clue === \"0x\")\n return { ciphertext: \"0x\", clue: \"0x\" };\n const ciphertext = envelope(value.ciphertext, 1, undefined, MAX_CIPHERTEXT_BYTES);\n const clue = envelope(value.clue, 68);\n if (clue.slice(130, 132).toLowerCase() !== \"18\") throw new Error(\"clue precision must be 24\");\n return { ciphertext, clue };\n}\n\nexport const deliveriesHash = (v: readonly Delivery[]) =>\n keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\n {\n type: \"tuple[]\",\n components: [\n { name: \"ciphertext\", type: \"bytes\" },\n { name: \"clue\", type: \"bytes\" },\n ],\n },\n ].map((parameter) => ParamType.from(parameter)),\n [dense(v, \"deliveries\")]\n ) as Hex\n ) as Hex;\nexport function normalizeFunding(input: FundingInput = {}): FundingParams {\n const f = { ...EMPTY_FUNDING, ...input };\n getAddress(f.payer) as Hex;\n uint(f.amount, 128, \"depositAmount\");\n uint(f.sigNonce, 256, \"sigNonce\");\n uint(f.deadline, 256, \"funding deadline\");\n if (!isHexString(f.signature) || !/^0x(?:[a-fA-F0-9]{2})*$/.test(f.signature))\n throw new Error(\"invalid signature bytes\");\n const p = f.permit;\n uint(p.deadline, 256);\n uint(p.v, 8);\n for (const v of [p.r, p.s])\n if (!isHexString(v) || dataLength(v) !== 32) throw new Error(\"permit r/s must be bytes32\");\n if ((f.amount === 0n) !== (BigInt(f.payer) === 0n))\n throw new Error(\"deposit amount and payer must both be zero or positive\");\n if (\n f.amount === 0n &&\n (f.sigNonce !== 0n ||\n f.deadline !== 0n ||\n f.signature !== \"0x\" ||\n p.deadline !== 0n ||\n p.v !== 0 ||\n BigInt(p.r) !== 0n ||\n BigInt(p.s) !== 0n)\n )\n throw new Error(\"zero funding must be entirely empty\");\n return { ...f, payer: getAddress(f.payer) as Hex };\n}\nexport function validateFundingSubmission(f: FundingParams, caller?: Address, now?: bigint) {\n if (f.signature !== \"0x\" && now !== undefined && uint(now, 64, \"now\") > f.deadline)\n throw new Error(\"funding authorization has expired\");\n if (\n f.signature === \"0x\" &&\n (f.sigNonce !== 0n ||\n f.deadline !== 0n ||\n (caller !== undefined && f.amount > 0n && (getAddress(caller) as Hex) !== f.payer))\n )\n throw new Error(\"direct funding requires payer caller and zero nonce/deadline\");\n}\nexport const getEIP712Domain = (c: TransactionContext) => ({\n name: \"InvisibleProtocol\",\n version: \"1\",\n chainId: uint(c.chainId, 64),\n verifyingContract: getAddress(c.protocolAddress) as Hex,\n});\nexport const fundingFields = [\n { name: \"requestHash\", type: \"bytes32\" },\n { name: \"payer\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"sigNonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n] as const;\n","import { normalizeFee } from \"../fees/fee\";\nimport { AbiCoder, Interface, getAddress, isHexString, dataLength } from \"ethers\";\nimport {\n computeWalletAuthorizationDigest,\n walletAuthorizationTypedData,\n} from \"@invisi-labs/primitives\";\nimport {\n invisiProtocolAbi,\n type Hex,\n type CreateCreditParams,\n type Delivery,\n} from \"../contracts/index\";\nimport {\n known,\n normalizeContext,\n field,\n word,\n uint,\n checkDeadline,\n dense,\n normalizeOpaqueDelivery,\n deliveriesHash,\n type TransactionContext,\n} from \"../validation\";\nexport const CREATE_CREDIT_FIELDS = [\n \"token\",\n \"owner\",\n \"revocationShard\",\n \"revocationSlot\",\n \"creditCommitment\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n] as const;\nexport function validateCreateCreditRequest(\n c: TransactionContext,\n p: CreateCreditParams,\n deliveries: readonly Delivery[]\n) {\n known(p, CREATE_CREDIT_FIELDS);\n const ctx = normalizeContext(c),\n owner = getAddress(p.owner) as Hex,\n revocationShard = uint(p.revocationShard, 64, \"revocationShard\"),\n revocationSlot = uint(p.revocationSlot, 16, \"revocationSlot\"),\n creditCommitment = word(field(p.creditCommitment));\n if (\n getAddress(p.token) !== ctx.tokenAddress ||\n !BigInt(owner) ||\n !revocationShard ||\n !BigInt(creditCommitment)\n )\n throw Error(\"invalid Credit authority, token or commitment\");\n if (dense(deliveries, \"deliveries\").length !== 2) throw Error(\"deliveries count mismatch\");\n return {\n ...ctx,\n ...normalizeFee(p),\n owner,\n revocationShard,\n revocationSlot,\n creditCommitment,\n deadline: checkDeadline(c, p.deadline),\n deliveries: deliveries.map((d) => normalizeOpaqueDelivery(d, {})),\n };\n}\nexport function createCreditBaseInputs(\n c: TransactionContext,\n p: CreateCreditParams,\n d: readonly Delivery[]\n) {\n const r = validateCreateCreditRequest(c, p, d),\n h = BigInt(deliveriesHash(d));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.owner),\n r.revocationShard,\n r.revocationSlot,\n BigInt(r.creditCommitment),\n r.deadline,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function authorizedCreditInputs(\n c: TransactionContext,\n operation: \"create-credit\" | \"credit-draw\" | \"update-credit\",\n capacity: number,\n base: readonly Hex[]\n) {\n const digest = BigInt(\n computeWalletAuthorizationDigest({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation,\n capacity,\n words: base.map(BigInt),\n })\n );\n return [...base, word(digest >> 128n), word(digest & ((1n << 128n) - 1n))];\n}\nexport function createCreditPublicInputs(\n c: TransactionContext,\n p: CreateCreditParams,\n d: readonly Delivery[]\n) {\n return authorizedCreditInputs(c, \"create-credit\", 1, createCreditBaseInputs(c, p, d));\n}\nexport function encodeCreateCreditTypedData(\n c: TransactionContext,\n p: CreateCreditParams,\n d: readonly Delivery[]\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"create-credit\",\n capacity: 1,\n words: createCreditBaseInputs(c, p, d).map(BigInt),\n });\n}\nexport function encodeCreditProof(proof: Hex): Hex {\n if (!isHexString(proof) || !dataLength(proof)) throw Error(\"empty or malformed Credit proof\");\n return AbiCoder.defaultAbiCoder().encode([\"uint8\", \"bytes\"], [0, proof]) as Hex;\n}\nexport interface BuildCreateCreditCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: CreateCreditParams;\n deliveries: readonly Delivery[];\n}\nexport function buildCreateCreditCalldata(p: BuildCreateCreditCalldataParams) {\n const r = validateCreateCreditRequest(p.context, p.params, p.deliveries);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"createCredit\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n p.deliveries,\n ]) as Hex,\n approveAmount: r.feeAmount,\n approvalRequirements: r.feeAmount\n ? [{ token: r.tokenAddress, payer: r.owner, amount: r.feeAmount }]\n : [],\n };\n}\n","// AUTO-GENERATED from invisi-protocol build artifacts. Run pnpm sync:abis.\nexport const invisiProtocolAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct InstanceParams\",\n \"components\": [\n {\n \"name\": \"factory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"globalEmergency\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"emergencyAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"verifierRouter\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ]\n },\n {\n \"name\": \"_screener\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_addressRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"CHAIN_ID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FUND_SHIELD_TYPEHASH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FUND_TRANSACT_TYPEHASH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeNoteTreeId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addressRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IAddressRegistry\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"broadcasterFeeBalance\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"circuitPaused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createCredit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creditAllocation\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creditDraw\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreditDrawParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"payers\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditPayer[]\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"grantRefs\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditGrantRef[]\",\n \"components\": [\n {\n \"name\": \"payerIndex\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"recoveryAmounts\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"totalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creditRevocationBitmap\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"word\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyAdmin\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"factory\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNoteTreeNextLeafIndex\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNoteTreeRoot\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTreeCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalEmergency\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"invalidateNonce\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isCommitmentRegistered\",\n \"inputs\": [\n {\n \"name\": \"commitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isNullifierSpent\",\n \"inputs\": [\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isTreeFull\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseCircuit\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"paused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeCredit\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rootHistory\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"screener\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setScreener\",\n \"inputs\": [\n {\n \"name\": \"newScreener\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"shield\",\n \"inputs\": [\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.ShieldParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.ShieldOutput[]\",\n \"components\": [\n {\n \"name\": \"identity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transact\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"r\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.TransactRequest\",\n \"components\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CrossTreeTransactParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"funding\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transact\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"requests\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.TransactRequest[]\",\n \"components\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CrossTreeTransactParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"funding\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseCircuit\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateCredit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.UpdateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"source\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.InputSource\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"verifierRouter\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawBroadcasterFees\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"BatchOutputs\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"firstOutputOffset\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokens\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"packedDeliveries\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BatchRequest\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requestIndex\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"capacity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"outputCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"depositAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"statementHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BroadcasterFee\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BroadcasterFeeWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CircuitPauseUpdated\",\n \"inputs\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CommitmentsInserted\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"commitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditCreated\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"leafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditDraw\",\n \"inputs\": [\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.CreditDrawParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"payers\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditPayer[]\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"grantRefs\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditGrantRef[]\",\n \"components\": [\n {\n \"name\": \"payerIndex\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"recoveryAmounts\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"totalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditRevoked\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"indexed\": true,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditUpdated\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.UpdateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"source\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.InputSource\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"leafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CrossTreeTransact\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NonceInvalidated\",\n \"inputs\": [\n {\n \"name\": \"signer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newNonce\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Paused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PublicDeposit\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"proofHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ScreenerUpdated\",\n \"inputs\": [\n {\n \"name\": \"newScreener\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Shield\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transact\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"inputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TransactAggregated\",\n \"inputs\": [\n {\n \"name\": \"proofHash\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreeCreated\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Unpaused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressInsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressScreeningFailed\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ChainIdMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CommitmentAlreadyRegistered\",\n \"inputs\": [\n {\n \"name\": \"commitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CreditAlreadyRevoked\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DoubleSpend\",\n \"inputs\": [\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EnforcedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExpectedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedInnerCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InexactTokenReceipt\",\n \"inputs\": [\n {\n \"name\": \"requested\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"received\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddressRegistry\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAggregateBatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidBatchSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCommitment\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreditAllocation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidDelivery\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFunding\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMerkleRoot\",\n \"inputs\": [\n {\n \"name\": \"root\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPrivateTransferContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPrivateTransferShape\",\n \"inputs\": [\n {\n \"name\": \"inputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidProof\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidReceivingAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShieldContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShieldOutputCount\",\n \"inputs\": [\n {\n \"name\": \"outputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidToken\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTree\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"LengthMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoBroadcasterFees\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotEmergencyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGlobalEmergency\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PrivateTransferExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ShieldExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SignatureExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StaleRoot\",\n \"inputs\": [\n {\n \"name\": \"root\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroNullifier\",\n \"inputs\": []\n }\n] as const\n","// AUTO-GENERATED from invisi-protocol build artifacts. Run pnpm sync:abis.\nexport const invisiFactoryAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"initialOwner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"globalEmergency_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"verifierRouter_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationCodeHash_\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"computeInstanceAddress\",\n \"inputs\": [\n {\n \"name\": \"creationCode\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"initialOwner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"emergencyAdmin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"screener_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"addressRegistry_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creationCodeHash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deploy\",\n \"inputs\": [\n {\n \"name\": \"creationCode\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"initialOwner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"emergencyAdmin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"screener_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"addressRegistry_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyPauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyPauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyUnpauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyUnpauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getInstanceAddress\",\n \"inputs\": [\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalEmergency\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"instanceCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isInstance\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"verifierRouter\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyPauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyPauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyUnpauseInstance\",\n \"inputs\": [\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EmergencyUnpauseRange\",\n \"inputs\": [\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"end\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InstanceDeployed\",\n \"inputs\": [\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"instance\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InstanceAlreadyDeployed\",\n \"inputs\": [\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreationCode\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAnInstance\",\n \"inputs\": [\n {\n \"name\": \"addr\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGlobalEmergency\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n] as const\n","// AUTO-GENERATED from invisi-protocol build artifacts. Run pnpm sync:abis.\nexport const invisiAddressRegistryAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"CHAIN_ID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isRegistered\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonceOf\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"receivingKeysOf\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"keys\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.ReceivingKeys\",\n \"components\": [\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"registerKeys\",\n \"inputs\": [\n {\n \"name\": \"registration\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.Registration\",\n \"components\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.ReceivingKeys\",\n \"components\": [\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateKeys\",\n \"inputs\": [\n {\n \"name\": \"registration\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.Registration\",\n \"components\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IAddressRegistry.ReceivingKeys\",\n \"components\": [\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ReceivingKeysSet\",\n \"inputs\": [\n {\n \"name\": \"walletIdentity\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"viewingPublicKey\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clueKey\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nextNonce\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ChainIdMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidReceivingKeys\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRegistrationSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWalletIdentity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NonceExhausted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistrationExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n }\n] as const\n","import { normalizeFee } from \"../fees/fee\";\nimport { Interface, getAddress } from \"ethers\";\nimport { creditPeriods, walletAuthorizationTypedData } from \"@invisi-labs/primitives\";\nimport {\n invisiProtocolAbi,\n type Hex,\n type CreditDrawParams,\n type UpdateCreditParams,\n type RevokeCreditParams,\n type Delivery,\n type CreditGrantRef,\n} from \"../contracts/index\";\nimport {\n normalizeContext,\n normalizeSources,\n normalizeOpaqueDelivery,\n known,\n uint,\n word,\n field,\n notes,\n dense,\n checkDeadline,\n deliveriesHash,\n pad,\n type TransactionContext,\n} from \"../validation\";\nimport { authorizedCreditInputs, encodeCreditProof } from \"./credit-create\";\nexport const CREDIT_DRAW_CAPACITIES = [1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80] as const;\nexport function selectCreditDrawCircuit(count: number) {\n if (!Number.isInteger(count) || count < 1 || count > 80)\n throw Error(\"draw requires1..80 grants\");\n const capacity = CREDIT_DRAW_CAPACITIES.find((n) => count <= n)!;\n return {\n name: `credit_draw_slots${capacity}`,\n capacity,\n publicInputCount: 17 + 10 * capacity,\n };\n}\nconst nonzero = (v: Hex) => {\n const w = word(field(v));\n if (!BigInt(w)) throw Error(\"zero commitment or nullifier\");\n return w;\n};\nexport function validateCreditDrawRequest(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n known(p, [\n \"token\",\n \"sources\",\n \"payers\",\n \"grantRefs\",\n \"nullifiers\",\n \"creditCommitments\",\n \"recoveryAmounts\",\n \"noteCommitment\",\n \"totalAmount\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n ]);\n const ctx = normalizeContext(c),\n ns = notes(p.nullifiers, \"nullifiers\").map(nonzero),\n profile = selectCreditDrawCircuit(ns.length),\n sources = normalizeSources(p.sources, ns.length, profile.capacity);\n if (getAddress(p.token) !== ctx.tokenAddress) throw Error(\"token context mismatch\");\n for (const k of [\"creditCommitments\", \"recoveryAmounts\"] as const)\n if (dense(p[k], k).length !== ns.length) throw Error(`${k} count mismatch`);\n const creditCommitments = p.creditCommitments.map(nonzero),\n recoveryAmounts = p.recoveryAmounts.map((v) => word(field(v))),\n noteCommitment = nonzero(p.noteCommitment);\n if (new Set([...creditCommitments, noteCommitment]).size !== ns.length + 1)\n throw Error(\"duplicate commitment\");\n let prev = 0n;\n if (!dense(p.payers, \"payers\").length || p.payers.length > ns.length)\n throw Error(\"payer count out of bounds\");\n const payers = p.payers.map((payer) => {\n known(payer, [\"payer\", \"amount\"]);\n const address = getAddress(payer.payer) as Hex,\n amount = uint(payer.amount, 128, \"payer amount\");\n if (BigInt(address) <= prev || !amount)\n throw Error(\"payers must be sorted unique positive addresses with positive receipts\");\n prev = BigInt(address);\n return { payer: address, amount };\n });\n if (dense(p.grantRefs, \"grantRefs\").length !== ns.length)\n throw Error(\"grant reference count mismatch\");\n let previous: CreditGrantRef | undefined;\n const grantRefs = p.grantRefs.map((ref) => {\n known(ref, [\"payerIndex\", \"shard\", \"slot\"]);\n const r = {\n payerIndex: uint(ref.payerIndex, 32),\n shard: uint(ref.shard, 64),\n slot: uint(ref.slot, 16),\n };\n if (r.payerIndex >= BigInt(payers.length) || !r.shard)\n throw Error(\"invalid grant namespace\");\n if (\n previous &&\n (r.payerIndex < previous.payerIndex ||\n (r.payerIndex === previous.payerIndex &&\n (r.shard < previous.shard ||\n (r.shard === previous.shard && r.slot <= previous.slot))))\n )\n throw Error(\"grant references must be sorted unique payer/shard/slot\");\n previous = r;\n return r;\n });\n const totalAmount = uint(p.totalAmount, 128, \"totalAmount\");\n if (!totalAmount || payers.reduce((sum, p) => sum + p.amount, 0n) !== totalAmount)\n throw Error(\"payer receipts must equal totalAmount\");\n if (normalizeFee(p).feeAmount >= totalAmount)\n throw Error(\"Credit draw fee must leave a positive ordinary Note\");\n if (dense(d, \"deliveries\").length !== 2 * ns.length + 1)\n throw Error(\"deliveries count mismatch\");\n if (c.timestamp === undefined) throw Error(\"explicit Credit draw timestamp required\");\n return {\n ...ctx,\n ...normalizeFee(p),\n profile,\n sources,\n payers,\n grantRefs,\n nullifiers: ns,\n creditCommitments,\n recoveryAmounts,\n noteCommitment,\n totalAmount,\n deadline: checkDeadline(c, p.deadline),\n periods: creditPeriods(c.timestamp),\n deliveries: d.map((v, i) =>\n normalizeOpaqueDelivery(v, { allowEmpty: i === 2 * ns.length })\n ),\n };\n}\nexport function creditDrawBaseInputs(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n const r = validateCreditDrawRequest(c, p, d),\n n = r.profile.capacity,\n h = BigInt(deliveriesHash(d));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.nullifiers.length),\n BigInt(r.sources.length),\n BigInt(r.payers.length),\n ...pad(\n r.sources.map((s) => s.treeId),\n n\n ),\n ...pad(\n r.sources.map((s) => BigInt(s.merkleRoot)),\n n\n ),\n ...pad(\n r.payers.map((s) => BigInt(s.payer)),\n n\n ),\n ...pad(\n r.payers.map((s) => s.amount),\n n\n ),\n ...pad(\n r.grantRefs.map((s) => s.payerIndex),\n n\n ),\n ...pad(\n r.grantRefs.map((s) => s.shard),\n n\n ),\n ...pad(\n r.grantRefs.map((s) => s.slot),\n n\n ),\n ...pad(r.nullifiers.map(BigInt), n),\n ...pad(r.creditCommitments.map(BigInt), n),\n ...pad(r.recoveryAmounts.map(BigInt), n),\n BigInt(r.noteCommitment),\n r.totalAmount,\n r.deadline,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n r.periods.currentDay,\n r.periods.currentMonth,\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function creditDrawPublicInputs(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n return authorizedCreditInputs(\n c,\n \"credit-draw\",\n selectCreditDrawCircuit(p.nullifiers.length).capacity,\n creditDrawBaseInputs(c, p, d)\n );\n}\nexport function encodeCreditDrawTypedData(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"credit-draw\",\n capacity: selectCreditDrawCircuit(p.nullifiers.length).capacity,\n words: creditDrawBaseInputs(c, p, d).map(BigInt),\n });\n}\nexport function validateUpdateCreditRequest(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n known(p, [\n \"token\",\n \"owner\",\n \"source\",\n \"nullifier\",\n \"creditCommitment\",\n \"revocationShard\",\n \"revocationSlot\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n ]);\n const ctx = normalizeContext(c),\n owner = getAddress(p.owner) as Hex,\n revocationShard = uint(p.revocationShard, 64);\n if (getAddress(p.token) !== ctx.tokenAddress || !BigInt(owner) || !revocationShard)\n throw Error(\"invalid update authority or token\");\n if (dense(d, \"deliveries\").length !== 2) throw Error(\"deliveries count mismatch\");\n return {\n ...ctx,\n ...normalizeFee(p),\n owner,\n source: normalizeSources([p.source], 1, 1)[0]!,\n nullifier: nonzero(p.nullifier),\n creditCommitment: nonzero(p.creditCommitment),\n revocationShard,\n revocationSlot: uint(p.revocationSlot, 16),\n deadline: checkDeadline(c, p.deadline),\n deliveries: d.map((v) => normalizeOpaqueDelivery(v, {})),\n };\n}\nexport function updateCreditBaseInputs(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n const r = validateUpdateCreditRequest(c, p, d),\n h = BigInt(deliveriesHash(d));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.owner),\n r.source.treeId,\n BigInt(r.source.merkleRoot),\n BigInt(r.nullifier),\n BigInt(r.creditCommitment),\n r.revocationShard,\n r.revocationSlot,\n r.deadline,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function updateCreditPublicInputs(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n return authorizedCreditInputs(c, \"update-credit\", 1, updateCreditBaseInputs(c, p, d));\n}\nexport function encodeUpdateCreditTypedData(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"update-credit\",\n capacity: 1,\n words: updateCreditBaseInputs(c, p, d).map(BigInt),\n });\n}\nexport interface BuildCreditDrawCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: CreditDrawParams;\n deliveries: readonly Delivery[];\n}\nexport function buildCreditDrawCalldata(p: BuildCreditDrawCalldataParams) {\n const r = validateCreditDrawRequest(p.context, p.params, p.deliveries);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"creditDraw\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n p.deliveries,\n ]) as Hex,\n approveAmount: 0n,\n approvalRequirements: r.payers.map((payer) => ({\n token: r.tokenAddress,\n payer: payer.payer,\n amount: payer.amount,\n })),\n };\n}\nexport interface BuildUpdateCreditCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: UpdateCreditParams;\n deliveries: readonly Delivery[];\n}\nexport function buildUpdateCreditCalldata(p: BuildUpdateCreditCalldataParams) {\n const r = validateUpdateCreditRequest(p.context, p.params, p.deliveries);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"updateCredit\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n p.deliveries,\n ]) as Hex,\n approveAmount: r.feeAmount,\n approvalRequirements: r.feeAmount\n ? [{ token: r.tokenAddress, payer: r.owner, amount: r.feeAmount }]\n : [],\n };\n}\nexport const REVOKE_CREDIT_TYPES = {\n RevokeCredit: [\n { name: \"token\", type: \"address\" },\n { name: \"owner\", type: \"address\" },\n { name: \"shard\", type: \"uint64\" },\n { name: \"slot\", type: \"uint16\" },\n { name: \"deadline\", type: \"uint256\" },\n { name: \"feeRecipient\", type: \"address\" },\n { name: \"feeAmount\", type: \"uint256\" },\n ],\n};\nexport function encodeRevokeCreditTypedData(c: TransactionContext, p: RevokeCreditParams) {\n known(p, [\"token\", \"owner\", \"shard\", \"slot\", \"deadline\", \"feeRecipient\", \"feeAmount\"]);\n if (\n getAddress(p.token) !== getAddress(c.tokenAddress) ||\n !BigInt(p.owner) ||\n !uint(p.shard, 64)\n )\n throw Error(\"invalid revocation authority\");\n return {\n domain: {\n name: \"InvisibleProtocol\",\n version: \"1\",\n chainId: c.chainId,\n verifyingContract: c.protocolAddress,\n },\n types: REVOKE_CREDIT_TYPES,\n primaryType: \"RevokeCredit\" as const,\n message: {\n token: getAddress(p.token),\n owner: getAddress(p.owner),\n shard: uint(p.shard, 64),\n slot: uint(p.slot, 16),\n deadline: checkDeadline(c, p.deadline),\n ...normalizeFee(p),\n },\n };\n}\nexport interface BuildRevokeCreditCalldataParams {\n context: TransactionContext;\n params: RevokeCreditParams;\n signature: Hex;\n caller?: Hex;\n}\nexport function buildRevokeCreditCalldata(p: BuildRevokeCreditCalldataParams) {\n encodeRevokeCreditTypedData(p.context, p.params);\n if (p.signature === \"0x\" && (!p.caller || getAddress(p.caller) !== getAddress(p.params.owner)))\n throw Error(\"direct revocation requires owner caller\");\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"revokeCredit\", [\n p.params.token,\n p.params.owner,\n p.params.shard,\n p.params.slot,\n p.params.deadline,\n normalizeFee(p.params).feeRecipient,\n normalizeFee(p.params).feeAmount,\n p.signature,\n ]) as Hex,\n approveAmount: normalizeFee(p.params).feeAmount,\n approvalRequirements: normalizeFee(p.params).feeAmount\n ? [\n {\n token: p.params.token,\n payer: p.params.owner,\n amount: normalizeFee(p.params).feeAmount,\n },\n ]\n : [],\n };\n}\n","export interface AggregateRoute {\n kind: \"dedicated\" | \"mixed\";\n capacity: number;\n count: number;\n name: string;\n publicInputCount: number;\n}\nexport const AGGREGATE_ROUTES: readonly AggregateRoute[] = Object.freeze(\n [\n ...Array.from({ length: 10 }, (_, i) => i + 1).flatMap((capacity) =>\n [1, 2, 5].map((count) => ({\n kind: \"dedicated\" as const,\n capacity,\n count,\n name: `transact_aggregate_${capacity}_${count}`,\n publicInputCount: (17 + 3 * capacity) * count + 1,\n }))\n ),\n ...[2, 3, 4, 5].map((count) => ({\n kind: \"mixed\" as const,\n capacity: 0,\n count,\n name: `transact_aggregate_mixed_1_5_${count}`,\n publicInputCount: 33 * count + 5,\n })),\n ].map((route) => Object.freeze(route))\n);\n/** Select the canonical immutable route without reordering requests or changing member capacities. */\nexport function selectAggregateRoute(capacities: readonly number[]): AggregateRoute {\n if (\n !capacities.length ||\n Array.from(\n { length: capacities.length },\n (_, i) => Number.isInteger(capacities[i]) && capacities[i]! >= 1 && capacities[i]! <= 10\n ).some((v) => !v)\n )\n throw Error(\"unsupported aggregate capacities\");\n const count = capacities.length,\n dedicated = AGGREGATE_ROUTES.find(\n (r) => r.kind === \"dedicated\" && r.capacity === capacities[0] && r.count === count\n );\n if (dedicated && capacities.every((c) => c === capacities[0])) return dedicated;\n const mixed = AGGREGATE_ROUTES.find((r) => r.kind === \"mixed\" && r.count === count);\n if (mixed && capacities.every((c) => c <= 5)) return mixed;\n throw Error(\"unsupported aggregate capacity/count combination\");\n}\n","import { selectAggregateRoute } from \"./aggregate-routes\";\nimport { AbiCoder, Interface, keccak256, ParamType } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport { invisiProtocolAbi, type TransactRequest } from \"../contracts/index\";\nimport {\n dense,\n fundingFields,\n getEIP712Domain,\n normalizeFunding,\n validateFundingSubmission,\n word,\n type DeploymentContext,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nimport { normalizeTransactRequest, selectTransactCapacity, transactPublicInputs } from \"./request\";\n\nexport interface BuildTransactAggregateCalldataParams {\n context: DeploymentContext & { now?: bigint };\n proof: Hex;\n requests: readonly TransactRequest[];\n caller?: Address;\n}\n\nexport function buildTransactAggregateCalldata(p: BuildTransactAggregateCalldataParams) {\n const route = selectAggregateRoute(\n dense<TransactRequest>(p.requests, \"requests\").map((r) =>\n selectTransactCapacity(r.params.nullifiers.length, r.params.noteCommitments.length)\n )\n );\n const requests = p.requests.map((request) => {\n const r = normalizeTransactRequest(\n { ...p.context, tokenAddress: request.params.token },\n request.params,\n request.deliveries,\n request.funding\n );\n if (r.capacity > 10) throw Error(\"aggregate supports C1..C10\");\n validateFundingSubmission(r.funding, p.caller, p.context.now);\n return {\n ...request,\n params: { ...request.params, feeRecipient: r.feeRecipient, feeAmount: r.feeAmount },\n };\n });\n const approvalRequirements: { token: Address; payer: Address; amount: bigint }[] = [];\n for (const request of requests) {\n const funding = normalizeFunding(request.funding);\n if (funding.amount === 0n) continue;\n const token = request.params.token;\n const existing = approvalRequirements.find(\n (item) =>\n item.token.toLowerCase() === token.toLowerCase() &&\n item.payer.toLowerCase() === funding.payer.toLowerCase()\n );\n if (existing) existing.amount += funding.amount;\n else approvalRequirements.push({ token, payer: funding.payer, amount: funding.amount });\n }\n return {\n data: new Interface(\n invisiProtocolAbi.filter(\n (item) =>\n item.type === \"function\" &&\n item.name === \"transact\" &&\n item.inputs[1]?.type === \"tuple[]\"\n )\n ).encodeFunctionData(\"transact\", [p.proof, requests]) as Hex,\n capacity: route.capacity,\n approvalRequirements,\n };\n}\n\nexport type AggregateMemberInput = Pick<TransactRequest, \"params\" | \"deliveries\"> & {\n funding?: FundingInput;\n};\n\n/** Atomic aggregate funding binds the member statement rather than the aggregate proof bytes. */\nexport function aggregateMemberRequestHash(c: TransactionContext, r: AggregateMemberInput) {\n const capacity = selectTransactCapacity(\n r.params.nullifiers.length,\n r.params.noteCommitments.length\n );\n if (capacity > 10) throw Error(\"aggregate supports C1..C10\");\n return keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\"bytes32\", \"uint256\", \"bytes32[]\"].map((parameter) => ParamType.from(parameter)),\n [\n keccak256(new TextEncoder().encode(\"InvisiAtomicBatchMemberV1\")),\n BigInt(capacity),\n transactPublicInputs(c, r.params, r.deliveries, r.funding),\n ]\n ) as Hex\n ) as Hex;\n}\n\n/** Router adapter business words (58 per member), not the aggregate circuit statement. */\nexport function aggregatePublicInputs(\n c: TransactionContext,\n requests: readonly AggregateMemberInput[]\n) {\n selectAggregateRoute(\n dense<AggregateMemberInput>(requests, \"requests\").map((r) =>\n selectTransactCapacity(r.params.nullifiers.length, r.params.noteCommitments.length)\n )\n );\n return requests.flatMap((r) => {\n const context = { ...c, tokenAddress: r.params.token };\n aggregateMemberRequestHash(context, r);\n return [\n word(\n BigInt(\n selectTransactCapacity(\n r.params.nullifiers.length,\n r.params.noteCommitments.length\n )\n )\n ),\n ...transactPublicInputs(context, r.params, r.deliveries, r.funding),\n ];\n });\n}\n\nexport function encodeAggregateFundingTypedData(c: TransactionContext, r: AggregateMemberInput) {\n const f = normalizeFunding(r.funding);\n if (f.amount === 0n) throw new Error(\"funding authorization requires positive deposit\");\n return {\n domain: getEIP712Domain(c),\n primaryType: \"FundTransact\" as const,\n types: { FundTransact: fundingFields },\n message: {\n requestHash: aggregateMemberRequestHash(c, r),\n payer: f.payer,\n amount: f.amount,\n sigNonce: f.sigNonce,\n deadline: f.deadline,\n },\n };\n}\n","import { getAddress } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\nimport { type CrossTreeTransactParams, type Delivery } from \"../contracts/index\";\nimport {\n checkDeadline,\n deliveriesHash,\n dense,\n known,\n normalizeContext,\n normalizeFunding,\n normalizeOpaqueDelivery,\n normalizeSources,\n notes,\n pad,\n uint,\n word,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\n\nexport const TRANSACT_CAPACITIES = [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150,\n 160, 170, 180, 190,\n] as const;\n\nexport type TransactCapacity = (typeof TRANSACT_CAPACITIES)[number];\n\nexport function selectTransactCapacity(inputs: number, outputs: number): TransactCapacity {\n if (\n !Number.isInteger(inputs) ||\n !Number.isInteger(outputs) ||\n inputs < 0 ||\n outputs < 0 ||\n inputs + outputs < 1 ||\n (inputs === 0 && outputs < 2) ||\n inputs + outputs > 190\n )\n throw new Error(\"unsupported transact shape\");\n return TRANSACT_CAPACITIES.find((n) => inputs + outputs <= n)!;\n}\n\nexport type TransactRequestParams = CrossTreeTransactParams;\n\nexport function normalizeTransactRequest(\n c: TransactionContext,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n funding: FundingInput = {}\n) {\n const ctx = normalizeContext(c);\n if ((getAddress(p.token) as Hex) !== ctx.tokenAddress)\n throw new Error(\"request token mismatch\");\n known(p, [\n \"token\",\n \"sources\",\n \"nullifiers\",\n \"noteCommitments\",\n \"withdrawalAddress\",\n \"withdrawalAmount\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n ]);\n const ns = notes(p.nullifiers, \"nullifiers\"),\n os = notes(p.noteCommitments, \"noteCommitments\"),\n capacity = selectTransactCapacity(ns.length, os.length);\n const sources = normalizeSources(p.sources, ns.length, capacity),\n deliveries = dense(cs, \"deliveries\").map((v) =>\n normalizeOpaqueDelivery(v, { allowEmpty: true })\n );\n if (deliveries.length !== os.length) throw new Error(\"deliveries count mismatch\");\n const withdrawalAmount = uint(p.withdrawalAmount, 128, \"withdrawalAmount\"),\n withdrawalAddress = getAddress(p.withdrawalAddress) as Hex,\n f = normalizeFunding(funding);\n const feeAmount = uint(p.feeAmount ?? 0n, 128, \"feeAmount\");\n const feeRecipient = getAddress(\n p.feeRecipient ?? \"0x0000000000000000000000000000000000000000\"\n ) as Hex;\n if ((feeAmount === 0n) !== (BigInt(feeRecipient) === 0n)) throw new Error(\"invalid fee\");\n if (\n (withdrawalAmount === 0n) !== (BigInt(withdrawalAddress) === 0n) ||\n (os.length === 0 && withdrawalAmount === 0n)\n )\n throw new Error(\"invalid withdrawal\");\n if (ns.length === 0 && (f.amount === 0n || withdrawalAmount !== 0n))\n throw new Error(\"zero inputs require positive funding and zero withdrawal\");\n return {\n ...ctx,\n capacity,\n sources,\n nullifiers: ns,\n noteCommitments: os,\n inputCount: ns.length,\n outputCount: os.length,\n sourceCount: sources.length,\n inputTreeIds: pad(\n sources.map((s) => s.treeId),\n capacity\n ),\n merkleRoots: pad(\n sources.map((s) => BigInt(s.merkleRoot)),\n capacity\n ),\n slotValues: pad([...ns, ...os].map(BigInt), capacity),\n deliveries,\n deliveriesHash: deliveriesHash(deliveries),\n withdrawalAddress,\n withdrawalAmount,\n feeRecipient,\n feeAmount,\n deadline: checkDeadline(c, p.deadline),\n depositAmount: f.amount,\n depositPayer: f.payer,\n funding: f,\n };\n}\n\nexport function transactPublicInputs(\n c: TransactionContext,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = normalizeTransactRequest(c, p, cs, f),\n h = BigInt(r.deliveriesHash);\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.inputCount),\n BigInt(r.outputCount),\n BigInt(r.sourceCount),\n ...r.inputTreeIds,\n ...r.merkleRoots,\n ...r.slotValues,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n BigInt(r.withdrawalAddress),\n r.withdrawalAmount,\n r.deadline,\n r.depositAmount,\n BigInt(r.depositPayer),\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\n","import { Interface } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport { invisiProtocolAbi, type Delivery, type TransactRequest } from \"../contracts/index\";\nimport {\n validateFundingSubmission,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nimport { normalizeTransactRequest, TransactRequestParams } from \"./request\";\n\nexport interface BuildTransactCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: TransactRequestParams;\n deliveries: readonly Delivery[];\n funding?: FundingInput;\n caller?: Address;\n}\n\nexport function buildTransactCalldata(p: BuildTransactCalldataParams) {\n const r = normalizeTransactRequest(p.context, p.params, p.deliveries, p.funding);\n validateFundingSubmission(r.funding, p.caller, p.context.now);\n const request: TransactRequest = {\n params: {\n token: r.tokenAddress,\n sources: r.sources,\n nullifiers: r.nullifiers,\n noteCommitments: r.noteCommitments,\n withdrawalAddress: r.withdrawalAddress,\n withdrawalAmount: r.withdrawalAmount,\n deadline: r.deadline,\n feeRecipient: r.feeRecipient,\n feeAmount: r.feeAmount,\n },\n deliveries: p.deliveries,\n funding: r.funding,\n };\n const abi = invisiProtocolAbi.filter(\n (item) =>\n item.type === \"function\" &&\n item.name === \"transact\" &&\n item.inputs.length === 2 &&\n item.inputs[1]?.type === \"tuple\"\n );\n const data = new Interface(abi).encodeFunctionData(\"transact\", [p.proof, request]) as Hex;\n return { data, capacity: r.capacity, approveAmount: r.depositAmount };\n}\n","import { walletAuthorizationTypedData } from \"@invisi-labs/primitives\";\nimport { AbiCoder, keccak256, ParamType } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\nimport { type Delivery } from \"../contracts/index\";\nimport {\n deliveriesHash,\n fundingFields,\n getEIP712Domain,\n normalizeFunding,\n word,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\nimport { crossTuple, singleTuple } from \"./abi-tuples\";\nimport { normalizeTransactRequest, transactPublicInputs, TransactRequestParams } from \"./request\";\n\nexport function encodeTransactTypedData(\n c: TransactionContext,\n p: TransactRequestParams,\n deliveries: readonly Delivery[],\n f: FundingInput = {}\n) {\n const r = normalizeTransactRequest(c, p, deliveries, f);\n return walletAuthorizationTypedData({\n context: { chainId: r.chainId, protocolAddress: BigInt(r.protocolAddress) },\n operation: \"transact\",\n capacity: r.capacity,\n words: transactPublicInputs(c, p, deliveries, f).map(BigInt),\n });\n}\n\nexport function transactFundingRequestHash(\n proof: Hex,\n p: TransactRequestParams,\n cs: readonly Delivery[]\n) {\n const single = {\n token: p.token,\n merkleRoot: p.sources[0]?.merkleRoot ?? word(0n),\n nullifiers: p.nullifiers,\n noteCommitments: p.noteCommitments,\n inputTreeId: p.sources[0]?.treeId ?? 0n,\n withdrawalAddress: p.withdrawalAddress,\n withdrawalAmount: p.withdrawalAmount,\n deadline: p.deadline,\n feeRecipient: p.feeRecipient ?? \"0x0000000000000000000000000000000000000000\",\n feeAmount: p.feeAmount ?? 0n,\n };\n return p.sources.length > 1\n ? (keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [{ type: \"bytes32\" }, { type: \"bytes32\" }, crossTuple, { type: \"bytes32\" }].map(\n (parameter) => ParamType.from(parameter)\n ),\n [\n keccak256(new TextEncoder().encode(\"InvisiCrossTreeTransact\")),\n keccak256(proof),\n { ...p, feeRecipient: single.feeRecipient, feeAmount: single.feeAmount },\n deliveriesHash(cs),\n ]\n ) as Hex\n ) as Hex)\n : (keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [{ type: \"bytes32\" }, singleTuple, { type: \"bytes32\" }].map((parameter) =>\n ParamType.from(parameter)\n ),\n [keccak256(proof), single, deliveriesHash(cs)]\n ) as Hex\n ) as Hex);\n}\n\nexport function encodeTransactFundingTypedData(\n c: TransactionContext,\n proof: Hex,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n funding: FundingInput\n) {\n normalizeTransactRequest(c, p, cs, funding);\n const f = normalizeFunding(funding);\n if (f.amount === 0n) throw new Error(\"funding authorization requires positive deposit\");\n return {\n domain: getEIP712Domain(c),\n primaryType: \"FundTransact\" as const,\n types: { FundTransact: fundingFields },\n message: {\n requestHash: transactFundingRequestHash(proof, p, cs),\n payer: f.payer,\n amount: f.amount,\n sigNonce: f.sigNonce,\n deadline: f.deadline,\n },\n };\n}\n","export const singleTuple = [\n \"(address token,bytes32 merkleRoot,bytes32[] nullifiers,bytes32[] noteCommitments,uint256 inputTreeId,address withdrawalAddress,uint256 withdrawalAmount,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n][0]!;\n\nexport const crossTuple = [\n \"(address token,(uint256 treeId,bytes32 merkleRoot)[] sources,bytes32[] nullifiers,bytes32[] noteCommitments,address withdrawalAddress,uint256 withdrawalAmount,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n][0]!;\n","import { TypedDataEncoder } from \"ethers\";\nimport { type Delivery } from \"../contracts/index\";\nimport { word, type FundingInput, type TransactionContext } from \"../validation\";\nimport { encodeTransactTypedData } from \"./funding\";\nimport { transactPublicInputs, TransactRequestParams } from \"./request\";\n\n/** Full active user-circuit public inputs: business statement followed by EIP-712 digest limbs. */\nexport function transactUserPublicInputs(\n c: TransactionContext,\n p: TransactRequestParams,\n cs: readonly Delivery[],\n f: FundingInput = {}\n) {\n const words = transactPublicInputs(c, p, cs, f),\n digest = BigInt(\n ((typed) =>\n TypedDataEncoder.hash(\n typed.domain,\n Object.fromEntries(\n Object.entries(typed.types).map(([name, fields]) => [\n name,\n [...(fields as readonly { name: string; type: string }[])],\n ])\n ),\n typed.message\n ))(encodeTransactTypedData(c, p, cs, f))\n );\n return [...words, word(digest >> 128n), word(digest & ((1n << 128n) - 1n))];\n}\n","import { computeNoteCommitment } from \"@invisi-labs/primitives\";\nimport { AbiCoder, getAddress, Interface, keccak256, ParamType } from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\nimport {\n invisiProtocolAbi,\n type Delivery,\n type ShieldOutput,\n type ShieldParams,\n} from \"../contracts/index\";\nimport { normalizeFee } from \"../fees/fee\";\nimport {\n checkDeadline,\n deliveriesHash,\n dense,\n field,\n fundingFields,\n getEIP712Domain,\n known,\n normalizeContext,\n normalizeFunding,\n normalizeOpaqueDelivery,\n notes,\n uint,\n validateFundingSubmission,\n type FundingInput,\n type TransactionContext,\n} from \"../validation\";\n\nexport interface BuildShieldCalldataParams {\n context: TransactionContext;\n params: ShieldParams;\n outputs: readonly ShieldOutput[];\n deliveries: readonly Delivery[];\n funding: FundingInput;\n caller?: Address;\n}\n\nexport async function validateShieldRequest(p: BuildShieldCalldataParams) {\n normalizeContext(p.context);\n if ((getAddress(p.params.token) as Hex) !== (getAddress(p.context.tokenAddress) as Hex))\n throw new Error(\"request token mismatch\");\n known(p.params, [\"token\", \"noteCommitments\", \"deadline\", \"feeRecipient\", \"feeAmount\"]);\n checkDeadline(p.context, p.params.deadline);\n const outputs = dense(p.outputs, \"outputs\"),\n commitments = notes(p.params.noteCommitments, \"noteCommitments\"),\n cs = dense(p.deliveries, \"deliveries\"),\n f = normalizeFunding(p.funding);\n if (\n outputs.length < 1 ||\n outputs.length > 10 ||\n commitments.length !== outputs.length ||\n cs.length !== outputs.length\n )\n throw new Error(\"shield requires 1..10 outputs and matching deliveries\");\n let total = 0n;\n for (const [i, o] of outputs.entries()) {\n known(o, [\"identity\", \"amount\"], \"output\");\n uint(o.amount, 128, \"amount\");\n if (o.amount === 0n) throw new Error(\"amount must be positive\");\n field(o.identity);\n normalizeOpaqueDelivery(cs[i]!, { allowEmpty: true });\n if (\n (await computeNoteCommitment(\n p.context.chainId,\n BigInt(p.context.protocolAddress),\n o.identity,\n BigInt(p.context.tokenAddress),\n o.amount\n )) !== commitments[i]\n )\n throw new Error(\"output commitment mismatch\");\n total += o.amount;\n }\n if (total + normalizeFee(p.params).feeAmount !== f.amount)\n throw new Error(\"funding must equal output total plus fee\");\n return f;\n}\n\nexport async function encodeShieldFundingTypedData(p: BuildShieldCalldataParams) {\n const f = await validateShieldRequest(p);\n return {\n domain: getEIP712Domain(p.context),\n primaryType: \"FundShield\" as const,\n types: { FundShield: fundingFields },\n message: {\n requestHash: shieldFundingRequestHash(p.params, p.outputs, p.deliveries),\n payer: f.payer,\n amount: f.amount,\n sigNonce: f.sigNonce,\n deadline: f.deadline,\n },\n };\n}\n\nexport async function buildShieldCalldata(p: BuildShieldCalldataParams) {\n const f = await validateShieldRequest(p);\n validateFundingSubmission(f, p.caller, p.context.now);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"shield\", [\n { ...p.params, ...normalizeFee(p.params) },\n p.outputs,\n p.deliveries,\n f,\n ]) as Hex,\n approveAmount: f.amount,\n };\n}\n\nexport function shieldFundingRequestHash(\n params: ShieldParams,\n outputs: readonly ShieldOutput[],\n cs: readonly Delivery[]\n) {\n const outputHash = keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\"(bytes32 identity,uint256 amount)[]\"].map((parameter) => ParamType.from(parameter)),\n [outputs]\n ) as Hex\n ) as Hex;\n return keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\n \"bytes32\",\n \"(address token,bytes32[] noteCommitments,uint256 deadline,address feeRecipient,uint256 feeAmount)\",\n \"bytes32\",\n \"bytes32\",\n ].map((parameter) => ParamType.from(parameter)),\n [\n keccak256(new TextEncoder().encode(\"InvisiShield\")),\n { ...params, ...normalizeFee(params) },\n outputHash,\n deliveriesHash(cs),\n ]\n ) as Hex\n ) as Hex;\n}\n","import {\n Contract,\n Interface,\n TypedDataEncoder,\n getAddress,\n getBytes,\n hexlify,\n isHexString,\n toBeHex,\n type ContractRunner,\n} from \"ethers\";\nimport type { Address, Hex } from \"../contracts/index\";\n\nimport { ReceivingAddress, decodeAddress, type ReceivingKeyLookup } from \"@invisi-labs/primitives\";\nimport { invisiAddressRegistryAbi } from \"../contracts/index\";\n\nexport interface RegistryContext {\n chainId: bigint;\n registryAddress: Address;\n /** Optional explicit wall-clock value in seconds. Equality with deadline is valid. */\n now?: bigint;\n}\nexport interface RegistryReceivingKeys {\n viewingPublicKey: Hex;\n clueKey: Hex;\n}\nexport interface AddressRegistration {\n /** Nonzero EVM owner: 20 bytes or canonical zero-padded bytes32. */\n ownerAddress: Hex;\n keys: RegistryReceivingKeys;\n /** The current registry nonce expected for this operation. */\n nonce: bigint;\n deadline: bigint;\n}\nexport interface RegistrationOptions {\n update?: boolean;\n /** Check a separately obtained current nonce before authorizing or encoding. */\n expectedNonce?: bigint;\n}\nexport interface RegistrationCalldata {\n to: Address;\n callData: Hex;\n value: 0n;\n}\nconst MAX_NONCE = (1n << 64n) - 1n;\nfunction uint64(value: bigint, name: string): bigint {\n if (typeof value !== \"bigint\" || value < 0n || value > MAX_NONCE)\n throw new RangeError(`${name} must be uint64`);\n return value;\n}\nfunction hexBytes(value: Hex, length: number): Uint8Array {\n if (typeof value !== \"string\" || !isHexString(value) || value.length !== 2 + length * 2)\n throw new Error(`Expected ${length} hexadecimal bytes`);\n return getBytes(value);\n}\nfunction normalizeKeys(ownerAddress: Hex, keys: RegistryReceivingKeys): RegistryReceivingKeys {\n const decoded = decodeAddress(\n ReceivingAddress.from({\n ownerAddress,\n viewingPublicKey: hexBytes(keys.viewingPublicKey, 33),\n clueKey: hexBytes(keys.clueKey, 32),\n }).toString()\n );\n if (decoded.kind !== \"long\") throw new Error(\"Expected full receiving address\");\n return {\n viewingPublicKey: hexlify(decoded.viewingPublicKey) as Hex,\n clueKey: hexlify(decoded.clueKey) as Hex,\n };\n}\nfunction normalize(\n context: RegistryContext,\n registration: AddressRegistration,\n options: RegistrationOptions\n) {\n uint64(context.chainId, \"chainId\");\n const registryAddress = getAddress(context.registryAddress) as Hex;\n if (BigInt(registryAddress) === 0n) throw new Error(\"Registry address must be nonzero\");\n if (!/^0x(?:[0-9a-fA-F]{40}|[0-9a-fA-F]{64})$/.test(registration.ownerAddress))\n throw new Error(\"Wallet identity must be an EVM owner or padded bytes32\");\n // Converting to 20 bytes rejects nonzero high bits instead of truncating them.\n const ownerAddress = decodeAddress(\n ReceivingAddress.fromIdentity(\n toBeHex(BigInt(registration.ownerAddress), 20) as Hex\n ).toString()\n ).ownerAddress;\n const keys = normalizeKeys(ownerAddress, registration.keys);\n const nonce = uint64(registration.nonce, \"nonce\"),\n deadline = uint64(registration.deadline, \"deadline\");\n if (nonce === MAX_NONCE) throw new Error(\"Registry nonce exhausted\");\n if (options.update !== undefined && typeof options.update !== \"boolean\")\n throw new TypeError(\"update must be boolean\");\n if (!options.update && nonce !== 0n)\n throw new Error(\"Initial registration requires nonce zero\");\n if (\n options.expectedNonce !== undefined &&\n uint64(options.expectedNonce, \"expectedNonce\") !== nonce\n )\n throw new Error(\"Registry nonce mismatch\");\n if (context.now !== undefined && deadline < uint64(context.now, \"now\"))\n throw new Error(\"Registration expired\");\n return { registryAddress, registration: { ownerAddress, keys, nonce, deadline } };\n}\n\n/** Standard registry EIP-712 data, independent of private WalletAuthorization. */\nexport function registrationTypedData(\n context: RegistryContext,\n registration: AddressRegistration,\n options: RegistrationOptions = {}\n) {\n const { registryAddress, registration: r } = normalize(context, registration, options);\n const primaryType = options.update ? \"UpdateReceivingKeys\" : \"RegisterReceivingKeys\";\n return {\n domain: {\n name: \"InvisiAddressRegistry\",\n version: \"1\",\n chainId: context.chainId,\n verifyingContract: registryAddress,\n },\n primaryType,\n types: {\n [primaryType]: [\n { name: \"walletIdentity\", type: \"bytes32\" },\n { name: \"viewingPublicKey\", type: \"bytes\" },\n { name: \"clueKey\", type: \"bytes32\" },\n { name: \"nonce\", type: \"uint64\" },\n { name: \"deadline\", type: \"uint64\" },\n ],\n },\n message: {\n walletIdentity: toBeHex(BigInt(r.ownerAddress), 32),\n ...r.keys,\n nonce: r.nonce,\n deadline: r.deadline,\n },\n };\n}\nexport function registrationDigest(\n context: RegistryContext,\n registration: AddressRegistration,\n options: RegistrationOptions = {}\n): Hex {\n const typed = registrationTypedData(context, registration, options);\n return TypedDataEncoder.hash(typed.domain, typed.types, typed.message) as Hex;\n}\n/** Encode an owner call (empty signature) or an EIP-712 / ERC-1271 authorized relay. */\nexport function buildRegistrationCalldata(\n context: RegistryContext,\n registration: AddressRegistration,\n signature: Hex,\n options: RegistrationOptions = {}\n): RegistrationCalldata {\n const normalized = normalize(context, registration, options);\n if (typeof signature !== \"string\" || !isHexString(signature) || signature.length % 2 !== 0)\n throw new Error(\"Registration signature must be hexadecimal bytes\");\n return {\n to: normalized.registryAddress,\n value: 0n,\n callData: new Interface(invisiAddressRegistryAbi).encodeFunctionData(\n options.update ? \"updateKeys\" : \"registerKeys\",\n [\n {\n // The registry wire schema retains its deployed EIP-712/ABI field name.\n walletIdentity: toBeHex(BigInt(normalized.registration.ownerAddress), 32),\n keys: normalized.registration.keys,\n nonce: normalized.registration.nonce,\n deadline: normalized.registration.deadline,\n },\n signature,\n ]\n ) as Hex,\n };\n}\n\n/** Ethers runner used for registry contract reads. */\nexport type RegistryReadClient = ContractRunner;\n/** One receivingKeysOf query per short address; RPC failures propagate unchanged. */\nexport function createRegistryReceivingKeyLookup(\n client: RegistryReadClient,\n registryAddress: Address\n): ReceivingKeyLookup {\n const address = getAddress(registryAddress) as Hex;\n if (BigInt(address) === 0n) throw new Error(\"Registry address must be nonzero\");\n return async (ownerAddress) => {\n const identity = decodeAddress(\n ReceivingAddress.fromIdentity(ownerAddress).toString()\n ).ownerAddress;\n const [keys, nonce] = await new Contract(\n address,\n invisiAddressRegistryAbi,\n client\n ).getFunction(\"receivingKeysOf\")(toBeHex(BigInt(identity), 32));\n uint64(nonce, \"registry nonce\");\n const normalized = normalizeKeys(identity, keys);\n return {\n viewingPublicKey: getBytes(normalized.viewingPublicKey),\n clueKey: getBytes(normalized.clueKey),\n };\n };\n}\n","import {\n computeCreditCommitment,\n computeCreditSharedKeyHash,\n computeNoteCommitment,\n computeNoteIdentity,\n FIELD_MODULUS,\n} from \"@invisi-labs/primitives\";\n\nexport interface VerifyNoteCommitmentParams {\n ownerAddress: `0x${string}`;\n tokenAddress: `0x${string}`;\n amount: bigint;\n nonce: `0x${string}`;\n noteCommitment: `0x${string}`;\n chainId: bigint;\n protocolAddress: `0x${string}`;\n}\n\nexport async function verifyNoteCommitment(params: VerifyNoteCommitmentParams): Promise<boolean> {\n const expected = await computeNoteCommitment(\n params.chainId,\n BigInt(params.protocolAddress),\n await computeNoteIdentity(BigInt(params.ownerAddress), BigInt(params.nonce)),\n BigInt(params.tokenAddress),\n params.amount\n );\n return BigInt(expected) === BigInt(params.noteCommitment);\n}\n\nexport interface VerifyCreditCommitmentParams {\n state: import(\"@invisi-labs/primitives\").CreditState;\n creditCommitment: `0x${string}`;\n}\nexport async function verifyCreditCommitment(p: VerifyCreditCommitmentParams): Promise<boolean> {\n return (await computeCreditCommitment(p.state)) === p.creditCommitment;\n}\n","import { Contract, getAddress, type ContractRunner } from \"ethers\";\nimport type { Hex } from \"../contracts/index\";\n\nimport { invisiFactoryAbi } from \"../contracts/index\";\n/**\n * Query the selected factory. The caller still verifies the returned deployment profile.\n * Calls `factory.getInstanceAddress(salt)` on-chain.\n */\nexport async function resolveInstanceAddress(\n client: ContractRunner,\n factoryAddress: `0x${string}`,\n salt: `0x${string}`\n): Promise<`0x${string}`> {\n const instance = await new Contract(\n getAddress(factoryAddress),\n invisiFactoryAbi,\n client\n ).getFunction(\"getInstanceAddress\")(salt);\n return getAddress(instance) as Hex;\n}\n","// Generated from authenticated protocol manifests.\nexport const CIRCUIT_RELEASE = {\n \"note\": {\n \"version\": 4,\n \"formatVersion\": 7,\n \"aggregateFormatVersion\": 10,\n },\n \"credit\": {\n \"version\": 7,\n \"formatVersion\": 8,\n \"manifestSha256\": \"c84fe8b0817f722428d9f888c0e38f2b1b48f15b670e74a75e8dd84776b14d66\",\n },\n} as const;\n","{\n \"formatVersion\": 1,\n \"kind\": \"documented-reference\",\n \"docsCommit\": \"7691afd3a78c67fef948729f6eaad981cde8b346\",\n \"sources\": [\n {\n \"path\": \"05-benchmarks/5.1-credit-create.md\",\n \"sha256\": \"8e1b8eef4aec2375ca21379ca0ce139e07c45f1a68f3a5f5343e6ee57a236ba5\",\n \"conditions\": \"First owner/token grant allocation at shard1/slot0, empty protocol tree, two Credit deliveries. See the hashed source for exact fee and policy configuration.\"\n },\n {\n \"path\": \"05-benchmarks/5.2-credit-update.md\",\n \"sha256\": \"3a28081632e0a8445aca7df3cb59beef88214bc5ec8b0ca255a31b24b2992544\",\n \"conditions\": \"Update after a successful debit of7 base units; preserve all usage fields and change limits/expiry. Preparation transactions excluded. See the hashed source for exact fee configuration.\"\n },\n {\n \"path\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"sha256\": \"ad91db9fd6f47ce1b6a67fd26c00ba3b5a708ca728296343494791f33dd374be\",\n \"conditions\": \"Owner direct, EOA relay or reference ERC1271/EIP7702 relay; first bitmap-word write or an already nonempty word. Three successful receipt medians per scenario; preparation and delegation excluded.\"\n },\n {\n \"path\": \"05-benchmarks/5.4-credit-draw.md\",\n \"sha256\": \"b77d97e552d927bf8060c30dcd79d51b11a2c6a6f27b352ec1429a94b10cbbfc\",\n \"conditions\": \"Local Anvil31337, Prague, real verifiers, MockERC20Permit, owners preminted and max-approved. Each distinct payer contributes7 base units; one spender, one ordinary recipient Note. Inputs in tree1, cursor=N; timestamp2000000000, deadline+86400. Credit ciphertext size/layout from the hashed measured source, Note160, clue68. No memo/FMD. One independently verified proof per statement reused across three successful snapshot-isolated transactions with distinct gasPrice/transaction hashes. Block30m, transaction budget16777216; preparation/mint/approve excluded. See the hashed source for exact fee and private limits.\"\n },\n {\n \"path\": \"05-benchmarks/5.5-daily-transact.md\",\n \"sha256\": \"aaf679c106e6b9b2990ffe62102041865dd266a062291fc3b7b7d2a16d6cca5d\",\n \"conditions\": \"2026-11-08, source eb5b88705227e61383e8620d7a34887a61617e08. Local Anvil31337, Prague, Solidity0.8.38 optimizer200, real verifiers, MockERC20Permit, direct caller funding without Permit; at most one depth16 Note tree without rollover. Ciphertext160 plus clue68 per output, empty memo. Three receipt medians from identical snapshots. N=input+output slots; choose the higher public-funding/mixed median at each N. Mixed recipe: one10UNIT input,4UNIT deposit,9UNIT private outputs,3UNIT withdrawal,2UNIT accrued fee; C1 withdraws12UNIT plus2UNIT fee. UNIT=10^16. Excludes deployment/mint/approve/input shielding.\"\n },\n {\n \"path\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"sha256\": \"d144c85e29684eb0081dce9a965761e07b35f0d9bdf99e4639162af62139fa35\",\n \"conditions\": \"Same environment and accounting as5.5. C2/C10/C190 compare public-funding0->C, private1->C-1 and withdrawalC->0 using real Notes. Three successful receipt medians per workload; see the hashed source for fee configuration.\"\n }\n ],\n \"assumptions\": [\n \"Local Anvil31337, Prague, real verifiers and reference token; not a live chain gas estimate.\",\n \"Medians transcribed from documentation; raw receipts and artifact fingerprints are not included.\",\n \"Credit draw samples use distinct payers only. Same-payer batches are not covered.\",\n \"No extrapolation; aggregate documents 5.7 and 5.8 describe historical experiments and are excluded.\"\n ],\n \"references\": [\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"1-1\",\n \"source\": \"05-benchmarks/5.1-credit-create.md\",\n \"shape\": {\n \"kind\": \"create-credit\",\n \"scenario\": \"first-allocation-empty-tree\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"1569564\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"1-2\",\n \"source\": \"05-benchmarks/5.1-credit-create.md\",\n \"shape\": {\n \"kind\": \"create-credit\",\n \"scenario\": \"first-allocation-empty-tree\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"1633090\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"2-3\",\n \"source\": \"05-benchmarks/5.2-credit-update.md\",\n \"shape\": {\n \"kind\": \"update-credit\",\n \"scenario\": \"after-draw-preserve-usage\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"1549474\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"2-4\",\n \"source\": \"05-benchmarks/5.2-credit-update.md\",\n \"shape\": {\n \"kind\": \"update-credit\",\n \"scenario\": \"after-draw-preserve-usage\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"1595900\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-5\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"direct\",\n \"bitmapWord\": \"empty\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"60867\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-6\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"direct\",\n \"bitmapWord\": \"empty\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"126893\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-7\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"direct\",\n \"bitmapWord\": \"nonempty\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"43779\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-8\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"direct\",\n \"bitmapWord\": \"nonempty\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"109805\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-9\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"eoa\",\n \"bitmapWord\": \"empty\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"66625\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-10\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"eoa\",\n \"bitmapWord\": \"empty\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"132651\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-11\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"eoa\",\n \"bitmapWord\": \"nonempty\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"49537\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-12\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"eoa\",\n \"bitmapWord\": \"nonempty\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"115551\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-13\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"erc1271\",\n \"bitmapWord\": \"empty\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"73187\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-14\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"erc1271\",\n \"bitmapWord\": \"empty\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"139213\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-15\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"erc1271\",\n \"bitmapWord\": \"nonempty\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"56099\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"3-16\",\n \"source\": \"05-benchmarks/5.3-credit-revoke.md\",\n \"shape\": {\n \"kind\": \"revoke-credit\",\n \"authorization\": \"erc1271\",\n \"bitmapWord\": \"nonempty\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"owner-pull\"\n },\n \"gasUnits\": \"122113\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-17\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 1,\n \"creditInputs\": 1,\n \"distinctPayers\": 1,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 1,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"1684086\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-18\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 1,\n \"creditInputs\": 1,\n \"distinctPayers\": 1,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 1,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"1708515\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-19\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 2,\n \"creditInputs\": 2,\n \"distinctPayers\": 2,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 2,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"1837285\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-20\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 2,\n \"creditInputs\": 2,\n \"distinctPayers\": 2,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 2,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"1861846\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-21\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 3,\n \"creditInputs\": 3,\n \"distinctPayers\": 3,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 3,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"1991361\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-22\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 3,\n \"creditInputs\": 3,\n \"distinctPayers\": 3,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 3,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"2015934\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-23\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 4,\n \"creditInputs\": 4,\n \"distinctPayers\": 4,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 4,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"2139954\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-24\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 4,\n \"creditInputs\": 4,\n \"distinctPayers\": 4,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 4,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"2164407\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-25\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 5,\n \"creditInputs\": 5,\n \"distinctPayers\": 5,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 5,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"2296231\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-26\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 5,\n \"creditInputs\": 5,\n \"distinctPayers\": 5,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 5,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"2320756\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-27\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 10,\n \"creditInputs\": 6,\n \"distinctPayers\": 6,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 6,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"2510811\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-28\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 10,\n \"creditInputs\": 6,\n \"distinctPayers\": 6,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 6,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"2535396\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-29\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 10,\n \"creditInputs\": 10,\n \"distinctPayers\": 10,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 10,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"3085446\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-30\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 10,\n \"creditInputs\": 10,\n \"distinctPayers\": 10,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 10,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"3109887\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-31\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 20,\n \"creditInputs\": 11,\n \"distinctPayers\": 11,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 11,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"3349297\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-32\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 20,\n \"creditInputs\": 11,\n \"distinctPayers\": 11,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 11,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"3373798\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-33\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 20,\n \"creditInputs\": 20,\n \"distinctPayers\": 20,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 20,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"4643522\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-34\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 20,\n \"creditInputs\": 20,\n \"distinctPayers\": 20,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 20,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"4668131\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-35\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 30,\n \"creditInputs\": 21,\n \"distinctPayers\": 21,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 21,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"4886701\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-36\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 30,\n \"creditInputs\": 21,\n \"distinctPayers\": 21,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 21,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"4911298\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-37\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 30,\n \"creditInputs\": 30,\n \"distinctPayers\": 30,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 30,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"6198106\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-38\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 30,\n \"creditInputs\": 30,\n \"distinctPayers\": 30,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 30,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"6222547\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-39\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 40,\n \"creditInputs\": 31,\n \"distinctPayers\": 31,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 31,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"6467489\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-40\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 40,\n \"creditInputs\": 31,\n \"distinctPayers\": 31,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 31,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"6491942\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-41\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 40,\n \"creditInputs\": 40,\n \"distinctPayers\": 40,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 40,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"7776508\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-42\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 40,\n \"creditInputs\": 40,\n \"distinctPayers\": 40,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 40,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"7801069\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-43\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 50,\n \"creditInputs\": 41,\n \"distinctPayers\": 41,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 41,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"8025394\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-44\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 50,\n \"creditInputs\": 41,\n \"distinctPayers\": 41,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 41,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"8049799\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-45\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 50,\n \"creditInputs\": 50,\n \"distinctPayers\": 50,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 50,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"9356709\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-46\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 50,\n \"creditInputs\": 50,\n \"distinctPayers\": 50,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 50,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"9381474\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-47\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 60,\n \"creditInputs\": 51,\n \"distinctPayers\": 51,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 51,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"9606202\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-48\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 60,\n \"creditInputs\": 51,\n \"distinctPayers\": 51,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 51,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"9630739\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-49\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 60,\n \"creditInputs\": 60,\n \"distinctPayers\": 60,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 60,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"10949040\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-50\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 60,\n \"creditInputs\": 60,\n \"distinctPayers\": 60,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 60,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"10973553\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-51\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 70,\n \"creditInputs\": 61,\n \"distinctPayers\": 61,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 61,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"11203008\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-52\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 70,\n \"creditInputs\": 61,\n \"distinctPayers\": 61,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 61,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"11227581\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-53\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 70,\n \"creditInputs\": 70,\n \"distinctPayers\": 70,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 70,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"12549144\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-54\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 70,\n \"creditInputs\": 70,\n \"distinctPayers\": 70,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 70,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"12573681\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-55\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 80,\n \"creditInputs\": 71,\n \"distinctPayers\": 71,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 71,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"12829603\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-56\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 80,\n \"creditInputs\": 71,\n \"distinctPayers\": 71,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 71,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"12854068\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-57\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 80,\n \"creditInputs\": 80,\n \"distinctPayers\": 80,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 80,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": false,\n \"feeMechanism\": \"none\"\n },\n \"gasUnits\": \"14187692\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"creditManifestSha256\": \"11b6b4191e8a62ae891fae41b2d3f37ccae00add26701eb5171a4e296400e861\",\n \"creditManifestVersion\": 7,\n \"creditFormatVersion\": 8\n },\n \"id\": \"4-58\",\n \"source\": \"05-benchmarks/5.4-credit-draw.md\",\n \"shape\": {\n \"kind\": \"draw-credit\",\n \"capacity\": 80,\n \"creditInputs\": 80,\n \"distinctPayers\": 80,\n \"sourceTrees\": 1,\n \"noteOutputs\": 1,\n \"creditOutputs\": 80,\n \"creditCiphertextBytes\": 485,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"distinct-payers\",\n \"feeEnabled\": true,\n \"feeMechanism\": \"draw-deduction\"\n },\n \"gasUnits\": \"14212265\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-59\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 1,\n \"noteInputs\": 1,\n \"noteOutputs\": 0,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"1083512\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-60\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 2,\n \"noteInputs\": 0,\n \"noteOutputs\": 2,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"1647980\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-61\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 3,\n \"noteInputs\": 0,\n \"noteOutputs\": 3,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"1736133\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-62\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 4,\n \"noteInputs\": 1,\n \"noteOutputs\": 3,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"1768554\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-63\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 5,\n \"noteInputs\": 0,\n \"noteOutputs\": 5,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"1868166\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-64\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 6,\n \"noteInputs\": 0,\n \"noteOutputs\": 6,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"1907330\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-65\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 7,\n \"noteInputs\": 0,\n \"noteOutputs\": 7,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"1995386\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-66\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 8,\n \"noteInputs\": 1,\n \"noteOutputs\": 7,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"2032430\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-67\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 9,\n \"noteInputs\": 0,\n \"noteOutputs\": 9,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"2132031\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-68\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 10,\n \"noteInputs\": 0,\n \"noteOutputs\": 10,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"2171135\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-69\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 20,\n \"noteInputs\": 0,\n \"noteOutputs\": 11,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"2309382\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-70\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 20,\n \"noteInputs\": 1,\n \"noteOutputs\": 19,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"2845840\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-71\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 30,\n \"noteInputs\": 0,\n \"noteOutputs\": 21,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"2970146\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-72\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 30,\n \"noteInputs\": 0,\n \"noteOutputs\": 30,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"3510478\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-73\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 40,\n \"noteInputs\": 0,\n \"noteOutputs\": 31,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"3623541\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-74\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 40,\n \"noteInputs\": 1,\n \"noteOutputs\": 39,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"4171574\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-75\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 50,\n \"noteInputs\": 0,\n \"noteOutputs\": 41,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"4296498\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-76\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 50,\n \"noteInputs\": 0,\n \"noteOutputs\": 50,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"4843150\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-77\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 60,\n \"noteInputs\": 0,\n \"noteOutputs\": 51,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"4981418\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-78\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 60,\n \"noteInputs\": 1,\n \"noteOutputs\": 59,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"5517267\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-79\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 70,\n \"noteInputs\": 0,\n \"noteOutputs\": 61,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"5642748\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-80\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 70,\n \"noteInputs\": 0,\n \"noteOutputs\": 70,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"6200517\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-81\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 80,\n \"noteInputs\": 0,\n \"noteOutputs\": 71,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"6314206\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-82\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 80,\n \"noteInputs\": 1,\n \"noteOutputs\": 79,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"6860640\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-83\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 90,\n \"noteInputs\": 0,\n \"noteOutputs\": 81,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"6986714\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-84\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 90,\n \"noteInputs\": 0,\n \"noteOutputs\": 90,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"7532207\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-85\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 100,\n \"noteInputs\": 0,\n \"noteOutputs\": 91,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"7646618\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-86\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 100,\n \"noteInputs\": 1,\n \"noteOutputs\": 99,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"8194247\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-87\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 110,\n \"noteInputs\": 0,\n \"noteOutputs\": 101,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"8321133\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-88\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 110,\n \"noteInputs\": 0,\n \"noteOutputs\": 110,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"8868005\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-89\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 120,\n \"noteInputs\": 0,\n \"noteOutputs\": 111,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"9007923\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-90\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 120,\n \"noteInputs\": 1,\n \"noteOutputs\": 119,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"9557324\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-91\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 130,\n \"noteInputs\": 0,\n \"noteOutputs\": 121,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"9684767\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-92\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 130,\n \"noteInputs\": 0,\n \"noteOutputs\": 130,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"10252048\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-93\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 140,\n \"noteInputs\": 0,\n \"noteOutputs\": 131,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"10367109\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-94\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 140,\n \"noteInputs\": 1,\n \"noteOutputs\": 139,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"10908725\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-95\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 150,\n \"noteInputs\": 0,\n \"noteOutputs\": 141,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"11036655\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-96\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 150,\n \"noteInputs\": 0,\n \"noteOutputs\": 150,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"11591647\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-97\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 160,\n \"noteInputs\": 0,\n \"noteOutputs\": 151,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"11707311\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-98\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 160,\n \"noteInputs\": 1,\n \"noteOutputs\": 159,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"12264284\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-99\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 170,\n \"noteInputs\": 0,\n \"noteOutputs\": 161,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"12392735\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-100\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 170,\n \"noteInputs\": 0,\n \"noteOutputs\": 170,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"12944828\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-101\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 180,\n \"noteInputs\": 0,\n \"noteOutputs\": 171,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"13060878\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-102\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 180,\n \"noteInputs\": 1,\n \"noteOutputs\": 179,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"mixed\"\n },\n \"gasUnits\": \"13610187\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-103\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 190,\n \"noteInputs\": 0,\n \"noteOutputs\": 181,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"13739353\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"5-104\",\n \"source\": \"05-benchmarks/5.5-daily-transact.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 190,\n \"noteInputs\": 0,\n \"noteOutputs\": 190,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"14293268\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-105\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 2,\n \"noteInputs\": 0,\n \"noteOutputs\": 2,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"1647980\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-106\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 2,\n \"noteInputs\": 1,\n \"noteOutputs\": 1,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"private\"\n },\n \"gasUnits\": \"1541975\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-107\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 2,\n \"noteInputs\": 2,\n \"noteOutputs\": 0,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"withdrawal\"\n },\n \"gasUnits\": \"1069449\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-108\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 10,\n \"noteInputs\": 0,\n \"noteOutputs\": 10,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"2171135\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-109\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 10,\n \"noteInputs\": 1,\n \"noteOutputs\": 9,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"private\"\n },\n \"gasUnits\": \"2068161\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-110\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 10,\n \"noteInputs\": 10,\n \"noteOutputs\": 0,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"withdrawal\"\n },\n \"gasUnits\": \"1284946\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-111\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 190,\n \"noteInputs\": 0,\n \"noteOutputs\": 190,\n \"sourceTrees\": 0,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"public-funding\"\n },\n \"gasUnits\": \"14293268\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-112\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 190,\n \"noteInputs\": 1,\n \"noteOutputs\": 189,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"private\"\n },\n \"gasUnits\": \"14188641\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n },\n {\n \"releaseIdentity\": {\n \"userManifestVersion\": 4,\n \"userFormatVersion\": 7\n },\n \"id\": \"6-113\",\n \"source\": \"05-benchmarks/5.6-daily-transact-paths.md\",\n \"shape\": {\n \"kind\": \"transact\",\n \"capacity\": 190,\n \"noteInputs\": 190,\n \"noteOutputs\": 0,\n \"sourceTrees\": 1,\n \"noteCiphertextBytes\": 160,\n \"clueBytes\": 68,\n \"scenario\": \"withdrawal\"\n },\n \"gasUnits\": \"6223162\",\n \"statistic\": \"median\",\n \"sampleCount\": 3\n }\n ]\n}\n","import { CIRCUIT_RELEASE } from \"../release-identity\";\nimport catalog from \"./data/documented-references.json\";\nexport type DocumentedReleaseIdentity =\n | { creditManifestVersion: number; creditFormatVersion: number; creditManifestSha256?: string }\n | { userManifestVersion: number; userFormatVersion: number };\nexport type DocumentedGasShape = Readonly<Record<string, string | number | boolean>>;\nexport type DocumentedGasReference =\n | {\n source: \"documented-reference\";\n available: false;\n reason: \"shape-not-covered\" | \"release-not-covered\";\n }\n | {\n source: \"documented-reference\";\n available: true;\n gasUnits: bigint;\n statistic: \"median\";\n sampleCount: number;\n referenceId: string;\n document: string;\n sourceSha256: string;\n docsCommit: string;\n conditions: string;\n assumptions: readonly string[];\n releaseIdentity: DocumentedReleaseIdentity;\n };\n/** Exact documented workload lookup. This is neither a transaction gas limit nor an RPC estimate. */\nexport function getDocumentedGasReference(query: DocumentedGasShape): DocumentedGasReference {\n const row = catalog.references.find((r) => {\n const shape = r.shape as DocumentedGasShape;\n return (\n Object.keys(query).length === Object.keys(shape).length &&\n Object.keys(shape).every((k) => query[k] === shape[k])\n );\n });\n if (!row)\n return { source: \"documented-reference\", available: false, reason: \"shape-not-covered\" };\n const identity = row.releaseIdentity as DocumentedReleaseIdentity;\n if (\n \"creditManifestVersion\" in identity &&\n (identity.creditManifestVersion !== CIRCUIT_RELEASE.credit.version ||\n identity.creditFormatVersion !== CIRCUIT_RELEASE.credit.formatVersion ||\n !/^[a-f0-9]{64}$/.test(identity.creditManifestSha256 ?? \"\") ||\n !/^[a-f0-9]{64}$/.test(CIRCUIT_RELEASE.credit.manifestSha256) ||\n identity.creditManifestSha256 !== CIRCUIT_RELEASE.credit.manifestSha256)\n )\n return { source: \"documented-reference\", available: false, reason: \"release-not-covered\" };\n const source = catalog.sources.find((s) => s.path === row.source)!;\n return {\n source: \"documented-reference\",\n available: true,\n gasUnits: BigInt(row.gasUnits),\n statistic: \"median\",\n sampleCount: row.sampleCount,\n referenceId: row.id,\n document: row.source,\n sourceSha256: source.sha256,\n docsCommit: catalog.docsCommit,\n conditions: source.conditions,\n assumptions: catalog.assumptions,\n releaseIdentity: row.releaseIdentity as unknown as DocumentedReleaseIdentity,\n };\n}\n","import type { Address, Hex } from \"@invisi-labs/primitives\";\nimport { getAddress } from \"ethers\";\n\n/** Runtime identity and indexing start for one deployed contract. */\nexport interface ContractDeployment {\n readonly address: Address;\n readonly runtimeCodeHash: Hex;\n readonly fromBlock: bigint;\n}\n\n/** A deployment record supplied by the selected service or its publisher. */\nexport interface ProtocolDeployment {\n readonly chainId: bigint;\n readonly protocol: Readonly<ContractDeployment>;\n readonly registry?: Readonly<ContractDeployment>;\n readonly broadcasterRegistry?: Readonly<ContractDeployment>;\n}\n\nfunction record(value: unknown, keys: readonly string[], name: string): Record<string, unknown> {\n if (\n !value ||\n typeof value !== \"object\" ||\n Array.isArray(value) ||\n Object.keys(value).some((key) => !keys.includes(key))\n )\n throw new Error(`${name} has unsupported fields`);\n return value as Record<string, unknown>;\n}\n\nfunction integer(value: unknown, name: string): bigint {\n if (typeof value === \"string\" && !/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new Error(`${name} must be an unsigned decimal integer`);\n }\n if (\n (typeof value !== \"bigint\" && typeof value !== \"string\" && typeof value !== \"number\") ||\n (typeof value === \"number\" && !Number.isSafeInteger(value))\n )\n throw new Error(`${name} must be an integer`);\n const result = BigInt(value);\n if (result < 0n || result >= 1n << 64n) throw new Error(`${name} exceeds u64`);\n return result;\n}\n\nfunction address(value: unknown): Address {\n if (typeof value !== \"string\") throw new Error(\"invalid contract address\");\n const normalized = getAddress(value) as Address;\n if (BigInt(normalized) === 0n) throw new Error(\"contract address must be nonzero\");\n return normalized;\n}\n\nfunction hash(value: unknown): Hex {\n if (typeof value !== \"string\" || !/^0x[0-9a-fA-F]{64}$/.test(value) || BigInt(value) === 0n) {\n throw new Error(\"invalid deployment runtime code hash\");\n }\n return value.toLowerCase() as Hex;\n}\n\nfunction contract(value: unknown): Readonly<ContractDeployment> {\n const input = record(value, [\"address\", \"runtimeCodeHash\", \"fromBlock\"], \"contract deployment\");\n return Object.freeze({\n address: address(input.address),\n runtimeCodeHash: hash(input.runtimeCodeHash),\n fromBlock: integer(input.fromBlock, \"contract fromBlock\"),\n });\n}\n\n/** Validate and snapshot an object or JSON record. This does not authenticate its source. */\nexport function defineDeployment(value: unknown): Readonly<ProtocolDeployment> {\n const input = record(\n value,\n [\"chainId\", \"protocol\", \"registry\", \"broadcasterRegistry\"],\n \"deployment\"\n );\n const chainId = integer(input.chainId, \"chainId\");\n if (chainId === 0n) throw new Error(\"deployment chainId must be nonzero\");\n return Object.freeze({\n chainId,\n protocol: contract(input.protocol),\n ...(input.registry === undefined ? {} : { registry: contract(input.registry) }),\n ...(input.broadcasterRegistry === undefined\n ? {}\n : { broadcasterRegistry: contract(input.broadcasterRegistry) }),\n });\n}\n"],"mappings":"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","names":["import_ethers","v","import_ethers","import_primitives","import_ethers","import_primitives","address","p","import_ethers","import_ethers","import_ethers","import_primitives","import_ethers","import_ethers","import_primitives","import_ethers","import_ethers","import_primitives","address","import_primitives","import_ethers","import_ethers"]}
|