opacity-issuer-core 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +44 -0
- package/dist/chunk-2STMWRIV.js +164 -0
- package/dist/chunk-2STMWRIV.js.map +1 -0
- package/dist/chunk-3L7NNVUV.cjs +184 -0
- package/dist/chunk-3L7NNVUV.cjs.map +1 -0
- package/dist/chunk-54Q3MU62.js +29 -0
- package/dist/chunk-54Q3MU62.js.map +1 -0
- package/dist/chunk-7ODYBEZH.js +889 -0
- package/dist/chunk-7ODYBEZH.js.map +1 -0
- package/dist/chunk-GMPQFX25.cjs +923 -0
- package/dist/chunk-GMPQFX25.cjs.map +1 -0
- package/dist/chunk-HJQZWNZJ.cjs +33 -0
- package/dist/chunk-HJQZWNZJ.cjs.map +1 -0
- package/dist/documents/index.cjs +170 -0
- package/dist/documents/index.cjs.map +1 -0
- package/dist/documents/index.d.cts +1370 -0
- package/dist/documents/index.d.ts +1370 -0
- package/dist/documents/index.js +5 -0
- package/dist/documents/index.js.map +1 -0
- package/dist/documents/validate.cjs +53 -0
- package/dist/documents/validate.cjs.map +1 -0
- package/dist/documents/validate.d.cts +70 -0
- package/dist/documents/validate.d.ts +70 -0
- package/dist/documents/validate.js +4 -0
- package/dist/documents/validate.js.map +1 -0
- package/dist/index.cjs +8917 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +11088 -0
- package/dist/index.d.ts +11088 -0
- package/dist/index.js +8647 -0
- package/dist/index.js.map +1 -0
- package/dist/subgraph.cjs +891 -0
- package/dist/subgraph.cjs.map +1 -0
- package/dist/subgraph.d.cts +456 -0
- package/dist/subgraph.d.ts +456 -0
- package/dist/subgraph.js +882 -0
- package/dist/subgraph.js.map +1 -0
- package/dist/transport-0_X4HTI6.d.ts +39 -0
- package/dist/transport-uaC5Yl3p.d.cts +39 -0
- package/dist/types-B4Yi7WA4.d.cts +108 -0
- package/dist/types-B4Yi7WA4.d.ts +108 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/purchases/abi.ts","../src/purchases/validation.ts","../src/purchases/index.ts","../src/issuers/abi.ts","../src/transfers/index.ts","../src/issuers/validation.ts","../src/issuers/deployment.ts","../src/issuers/operations.ts","../src/issuers/policies.ts","../src/issuers/sandbox-deployment.ts","../src/issuers/index.ts","../src/sandbox/users.ts","../src/sandbox/create-user.ts","../src/sandbox/wallet.ts","../src/sandbox/transfer.ts"],"names":["parseAbi","OpacityIssuerError","isAddress","zeroAddress","getAddress","maxUint256","SEPOLIA_SANDBOX_MANIFEST","encodeFunctionData","sendsInProgress","deployment","defineChain","zeroHash","options","decodeEventLog","address","chainId","uint256","sameAddress","BaseError","ContractFunctionRevertedError","chain","waitOptions","encodeDeployData","bytes32","keccak256","stringToHex","encodeAbiParameters","ContractFunctionZeroDataError","active","ExecutionRevertedError","decodeFunctionResult","record","toBytes","sandboxUserId","generatePrivateKey","privateKeyToAccount","createWalletClient","invalid","plain","checkChain","amount","assertReady","result"],"mappings":"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","file":"index.cjs","sourcesContent":["import { parseAbi } from 'viem';\n\n/** SecurityTokenVault deposit plus errors from its ERC20 / SecurityToken mint path. */\nexport const securityTokenVaultAbi = parseAbi([\n 'function token() view returns (address)',\n 'function tokenId() view returns (uint256)',\n 'function stablecoin() view returns (address)',\n 'function deposit(uint256 amount)',\n 'event Deposited(address indexed user, uint256 amount)',\n 'error ZeroAmount()',\n 'error NotAdmin()',\n 'error IssuerRevoked()',\n 'error MintingIsPaused()',\n 'error RecipientNotAllowed()',\n 'error RecipientAccountFrozen()',\n 'error MaxSupplyExceeded(uint256 tokenId, uint256 currentSupply, uint256 mintAmount, uint256 cap)',\n 'error TransferBlockedByPolicy(uint256 idx)',\n 'error TokenTraitRegistryNotSet()',\n 'error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)',\n 'error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)',\n 'error ERC1155InvalidReceiver(address receiver)',\n 'error SafeERC20FailedOperation(address token)',\n 'error ReentrancyGuardReentrantCall()',\n]);\n\nexport const purchasePaymentTokenAbi = parseAbi([\n 'function decimals() view returns (uint8)',\n 'function symbol() view returns (string)',\n 'function balanceOf(address account) view returns (uint256)',\n 'function allowance(address owner, address spender) view returns (uint256)',\n 'function approve(address spender, uint256 amount) returns (bool)',\n 'event Approval(address indexed owner, address indexed spender, uint256 value)',\n 'error ERC20InvalidApprover(address approver)',\n 'error ERC20InvalidSpender(address spender)',\n]);\n\nexport const purchaseSecurityTokenAbi = parseAbi([\n 'function allowlistRegistry() view returns (address)',\n 'function issuerAdmin() view returns (address)',\n 'function owner() view returns (address)',\n 'function mintingPaused() view returns (bool)',\n 'function isAccountFrozen(address account) view returns (bool)',\n 'function getMaxSupply(uint256 id) view returns (uint256)',\n 'function totalSupply(uint256 id) view returns (uint256)',\n 'function balanceOf(address account, uint256 id) view returns (uint256)',\n 'event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)',\n]);\n\nexport const purchaseRegistryAbi = parseAbi([\n 'function isAllowed(address account) view returns (bool)',\n 'function isAuthorizedIssuer(address account) view returns (bool)',\n 'function getUserId(address account) view returns (bytes32)',\n 'function hasGlobalTrait(bytes32 userId, bytes32 traitId) view returns (bool)',\n]);\n","import { getAddress, isAddress, maxUint256, zeroAddress } from 'viem';\nimport type { Address, Hex } from 'viem';\nimport { OpacityIssuerError } from '../errors.js';\nimport type { PurchaseDeployment, PurchaseParams } from './types.js';\n\nexport class OpacityPurchaseError extends OpacityIssuerError {\n constructor(\n readonly code:\n | 'invalid-input'\n | 'missing-client'\n | 'chain-mismatch'\n | 'account-mismatch'\n | 'deployment-mismatch'\n | 'purchase-blocked'\n | 'approval-required'\n | 'approval-changed'\n | 'simulation-failed'\n | 'send-in-progress',\n message: string,\n options?: { cause?: unknown },\n ) {\n super(message, options);\n this.name = 'OpacityPurchaseError';\n }\n}\n\nexport function address(value: Address, name: string): Address {\n if (typeof value !== 'string' || !isAddress(value, { strict: false }) || value === zeroAddress) {\n throw new OpacityPurchaseError('invalid-input', `${name} must be a nonzero address.`);\n }\n return getAddress(value);\n}\n\nexport function chainId(value: number): number {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new OpacityPurchaseError('invalid-input', 'chainId must be a positive safe integer.');\n }\n return value;\n}\n\nexport function uint256(value: bigint, name: string, positive = false): bigint {\n if (typeof value !== 'bigint' || value < (positive ? 1n : 0n) || value > maxUint256) {\n throw new OpacityPurchaseError(\n 'invalid-input',\n `${name} must be a ${positive ? 'positive ' : ''}uint256 bigint.`,\n );\n }\n return value;\n}\n\nexport function bytes32(value: Hex, name: string, nonzero = false): Hex {\n if (\n typeof value !== 'string' ||\n !/^0x[\\da-fA-F]{64}$/.test(value) ||\n (nonzero && /^0x0+$/.test(value))\n ) {\n throw new OpacityPurchaseError(\n 'invalid-input',\n `${name} must be ${nonzero ? 'nonzero ' : ''}bytes32.`,\n );\n }\n return value;\n}\n\nexport function deployment(value: PurchaseDeployment): PurchaseDeployment {\n return Object.freeze({\n chainId: chainId(value.chainId),\n vault: address(value.vault, 'vault'),\n token: address(value.token, 'token'),\n tokenId: uint256(value.tokenId, 'tokenId'),\n paymentToken: address(value.paymentToken, 'paymentToken'),\n ...(value.allowlistRegistry === undefined\n ? {}\n : { allowlistRegistry: address(value.allowlistRegistry, 'allowlistRegistry') }),\n requiredGlobalTraits: Object.freeze(\n (value.requiredGlobalTraits ?? []).map((trait) =>\n bytes32(trait, 'requiredGlobalTraits', true),\n ),\n ),\n });\n}\n\nexport function purchaseParams(value: PurchaseParams): PurchaseParams {\n return {\n deployment: deployment(value.deployment),\n buyer: address(value.buyer, 'buyer'),\n amount: uint256(value.amount, 'amount', true),\n };\n}\n\nexport function sameAddress(a: Address, b: Address): boolean {\n return a.toLowerCase() === b.toLowerCase();\n}\n\n/** Strict decimal parsing: rejects extra precision instead of rounding or using floating point. */\nexport function parsePurchaseAmount(value: string, decimals: number): bigint {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255) {\n throw new OpacityPurchaseError('invalid-input', 'decimals must be an integer from 0 to 255.');\n }\n if (typeof value !== 'string' || !/^\\d+(?:\\.\\d+)?$/.test(value)) {\n throw new OpacityPurchaseError(\n 'invalid-input',\n 'amount must be a plain positive decimal string.',\n );\n }\n const [whole = '', fraction = ''] = value.split('.');\n if (fraction.length > decimals) {\n throw new OpacityPurchaseError(\n 'invalid-input',\n `amount has more than ${decimals} decimal places.`,\n );\n }\n // A uint256 is at most 78 decimal digits; avoid parsing unbounded user input as bigint.\n const digits = `${whole}${fraction.padEnd(decimals, '0')}`.replace(/^0+/, '');\n if (digits.length > 78)\n throw new OpacityPurchaseError('invalid-input', 'amount exceeds uint256.');\n return uint256(BigInt(digits || '0'), 'amount', true);\n}\n","import { SEPOLIA_SANDBOX_MANIFEST } from '../deployments/sepolia-sandbox.js';\nimport { decodeEventLog, defineChain, encodeFunctionData, zeroAddress, zeroHash } from 'viem';\nimport type { Address, Hash, PublicClient, TransactionReceipt, WalletClient } from 'viem';\nimport {\n purchasePaymentTokenAbi,\n purchaseRegistryAbi,\n purchaseSecurityTokenAbi,\n securityTokenVaultAbi,\n} from './abi.js';\nimport type {\n PreparedPurchase,\n PurchaseApprovalStep,\n PurchaseBlocker,\n PurchaseClientOptions,\n PurchaseDeployment,\n PurchaseOffering,\n PurchaseParams,\n PurchaseQuote,\n PurchaseQuoteParams,\n PurchaseReceiptResult,\n PurchaseTransaction,\n PurchaseWaitOptions,\n PurchaseWriteRequest,\n SubmittedPurchase,\n SubmittedPurchaseApproval,\n} from './types.js';\nimport {\n address,\n bytes32,\n chainId,\n deployment as validateDeployment,\n OpacityPurchaseError,\n purchaseParams,\n sameAddress,\n uint256,\n} from './validation.js';\n\nexport * from './types.js';\nexport * from './abi.js';\nexport { OpacityPurchaseError, parsePurchaseAmount } from './validation.js';\n\n/** Verified sandbox v3 MMF offering; shared provenance is SEPOLIA_SANDBOX_MANIFEST. */\nexport const SANDBOX_PURCHASE_DEPLOYMENT: PurchaseDeployment = validateDeployment({\n chainId: SEPOLIA_SANDBOX_MANIFEST.chainId,\n vault: SEPOLIA_SANDBOX_MANIFEST.addresses.vault,\n token: SEPOLIA_SANDBOX_MANIFEST.addresses.mmfToken,\n tokenId: SEPOLIA_SANDBOX_MANIFEST.mmfTokenId,\n paymentToken: SEPOLIA_SANDBOX_MANIFEST.addresses.mockUSDC,\n allowlistRegistry: SEPOLIA_SANDBOX_MANIFEST.addresses.registry,\n requiredGlobalTraits: [SEPOLIA_SANDBOX_MANIFEST.documentTraitId],\n});\n\n/** Pure builder for external wallet integrations; run live preflight/simulation before sending. */\nexport function buildPurchaseWriteRequest(input: PurchaseParams): PurchaseWriteRequest {\n const params = purchaseParams(input);\n return {\n address: params.deployment.vault,\n abi: securityTokenVaultAbi,\n functionName: 'deposit',\n args: [params.amount],\n account: params.buyer,\n chainId: params.deployment.chainId,\n };\n}\n\nexport function buildPurchaseTransaction(input: PurchaseParams): PurchaseTransaction {\n const request = buildPurchaseWriteRequest(input);\n return {\n to: request.address,\n from: request.account,\n data: encodeFunctionData(request),\n value: 0n,\n chainId: request.chainId,\n };\n}\n\nfunction approvalStep(params: PurchaseParams, kind: 'reset' | 'approve'): PurchaseApprovalStep {\n const amount = kind === 'reset' ? 0n : params.amount;\n const request = {\n address: params.deployment.paymentToken,\n abi: purchasePaymentTokenAbi,\n functionName: 'approve',\n args: [params.deployment.vault, amount],\n account: params.buyer,\n chainId: params.deployment.chainId,\n } as const;\n return {\n kind,\n amount,\n request,\n transaction: {\n to: request.address,\n from: request.account,\n data: encodeFunctionData(request),\n value: 0n,\n chainId: request.chainId,\n },\n };\n}\n\n/**\n * Browser-safe, direct primary issuance through a trusted SecurityTokenVault.\n * All methods except the two explicitly named send methods are read-only.\n * There is no purchase retry loop: retain every returned hash and resume receipt waits.\n */\nexport function createPurchasesNamespace(options: PurchaseClientOptions = {}) {\n const configuredChain = options.chainId === undefined ? undefined : chainId(options.chainId);\n const publicClient = options.publicClient;\n const walletClient = options.walletClient;\n const sendsInProgress = new Set<string>();\n\n async function clientFor(deployment: PurchaseDeployment): Promise<PublicClient> {\n if (!publicClient)\n throw new OpacityPurchaseError(\n 'missing-client',\n 'A publicClient is required for purchase reads.',\n );\n if (configuredChain !== undefined && configuredChain !== deployment.chainId) {\n throw new OpacityPurchaseError(\n 'chain-mismatch',\n 'Purchase deployment differs from the configured SDK chain.',\n );\n }\n if ((await publicClient.getChainId()) !== deployment.chainId) {\n throw new OpacityPurchaseError(\n 'chain-mismatch',\n 'Public RPC chain differs from the purchase deployment.',\n );\n }\n return publicClient;\n }\n\n async function walletFor(params: PurchaseParams): Promise<WalletClient> {\n if (!walletClient)\n throw new OpacityPurchaseError(\n 'missing-client',\n 'A walletClient is required to send purchases.',\n );\n if (\n (await walletClient.getChainId()) !== params.deployment.chainId ||\n (walletClient.chain !== undefined && walletClient.chain.id !== params.deployment.chainId)\n ) {\n throw new OpacityPurchaseError(\n 'chain-mismatch',\n 'Wallet chain differs from the purchase deployment.',\n );\n }\n const selected =\n walletClient.account?.type === 'local'\n ? walletClient.account.address\n : (await walletClient.getAddresses())[0];\n if (\n !selected ||\n !sameAddress(selected, params.buyer) ||\n (walletClient.account !== undefined &&\n !sameAddress(walletClient.account.address, params.buyer))\n ) {\n throw new OpacityPurchaseError(\n 'account-mismatch',\n 'The selected wallet differs from the pinned purchase buyer.',\n );\n }\n return walletClient;\n }\n\n function sendChain(wallet: WalletClient, id: number) {\n return (\n wallet.chain ??\n defineChain({\n id,\n name: `Purchase chain ${id}`,\n nativeCurrency: { name: 'Native currency', symbol: 'NATIVE', decimals: 18 },\n rpcUrls: { default: { http: [] } },\n })\n );\n }\n\n async function getOffering(input: PurchaseDeployment): Promise<PurchaseOffering> {\n const deployment = validateDeployment(input);\n const client = await clientFor(deployment);\n const block = await client.getBlock({ blockTag: 'latest' });\n const blockNumber = block.number;\n const [vaultCode, tokenCode, paymentCode, token, tokenId, stablecoin] = await Promise.all([\n client.getBytecode({ address: deployment.vault, blockNumber }),\n client.getBytecode({ address: deployment.token, blockNumber }),\n client.getBytecode({ address: deployment.paymentToken, blockNumber }),\n client.readContract({\n address: deployment.vault,\n abi: securityTokenVaultAbi,\n functionName: 'token',\n blockNumber,\n }),\n client.readContract({\n address: deployment.vault,\n abi: securityTokenVaultAbi,\n functionName: 'tokenId',\n blockNumber,\n }),\n client.readContract({\n address: deployment.vault,\n abi: securityTokenVaultAbi,\n functionName: 'stablecoin',\n blockNumber,\n }),\n ]);\n if (\n !vaultCode ||\n vaultCode === '0x' ||\n !tokenCode ||\n tokenCode === '0x' ||\n !paymentCode ||\n paymentCode === '0x' ||\n !sameAddress(token, deployment.token) ||\n tokenId !== deployment.tokenId ||\n !sameAddress(stablecoin, deployment.paymentToken)\n ) {\n throw new OpacityPurchaseError(\n 'deployment-mismatch',\n 'Vault code or immutable token/payment/ID wiring does not match the trusted deployment.',\n );\n }\n const tokenRead = {\n address: deployment.token,\n abi: purchaseSecurityTokenAbi,\n blockNumber,\n } as const;\n const paymentRead = {\n address: deployment.paymentToken,\n abi: purchasePaymentTokenAbi,\n blockNumber,\n } as const;\n const [\n registry,\n owner,\n issuerAdmin,\n mintingPaused,\n totalSupply,\n maxSupply,\n paymentDecimals,\n paymentSymbol,\n ] = await Promise.all([\n client.readContract({ ...tokenRead, functionName: 'allowlistRegistry' }),\n client.readContract({ ...tokenRead, functionName: 'owner' }),\n client.readContract({ ...tokenRead, functionName: 'issuerAdmin' }),\n client.readContract({ ...tokenRead, functionName: 'mintingPaused' }),\n client.readContract({\n ...tokenRead,\n functionName: 'totalSupply',\n args: [deployment.tokenId],\n }),\n client.readContract({\n ...tokenRead,\n functionName: 'getMaxSupply',\n args: [deployment.tokenId],\n }),\n client.readContract({ ...paymentRead, functionName: 'decimals' }),\n client.readContract({ ...paymentRead, functionName: 'symbol' }),\n ]);\n const allowlistRegistry = address(registry, 'live allowlistRegistry');\n if (\n deployment.allowlistRegistry !== undefined &&\n !sameAddress(allowlistRegistry, deployment.allowlistRegistry)\n ) {\n throw new OpacityPurchaseError(\n 'deployment-mismatch',\n 'Token registry does not match the trusted deployment.',\n );\n }\n const issuerAuthorized = await client.readContract({\n address: allowlistRegistry,\n abi: purchaseRegistryAbi,\n functionName: 'isAuthorizedIssuer',\n args: [owner],\n blockNumber,\n });\n return {\n deployment,\n blockNumber,\n blockTimestamp: block.timestamp,\n allowlistRegistry,\n owner,\n issuerAdmin,\n issuerAuthorized,\n mintingPaused,\n totalSupply,\n maxSupply,\n paymentDecimals,\n paymentSymbol,\n };\n }\n\n async function quote(input: PurchaseQuoteParams): Promise<PurchaseQuote> {\n const amount = uint256(input.amount, 'amount', true);\n return {\n offering: await getOffering(input.deployment),\n paymentAmount: amount,\n tokenAmount: amount,\n feeAmount: 0n,\n };\n }\n\n async function preparePurchase(input: PurchaseParams): Promise<PreparedPurchase> {\n const params = purchaseParams(input);\n const result = await quote(params);\n const { offering } = result;\n const client = await clientFor(params.deployment);\n const blockNumber = offering.blockNumber;\n const paymentRead = {\n address: params.deployment.paymentToken,\n abi: purchasePaymentTokenAbi,\n blockNumber,\n } as const;\n const tokenRead = {\n address: params.deployment.token,\n abi: purchaseSecurityTokenAbi,\n blockNumber,\n } as const;\n const registryRead = {\n address: offering.allowlistRegistry,\n abi: purchaseRegistryAbi,\n blockNumber,\n } as const;\n const [\n paymentBalance,\n allowance,\n tokenBalance,\n nativeBalance,\n isAllowed,\n isAuthorizedIssuer,\n isAccountFrozen,\n userId,\n ] = await Promise.all([\n client.readContract({ ...paymentRead, functionName: 'balanceOf', args: [params.buyer] }),\n client.readContract({\n ...paymentRead,\n functionName: 'allowance',\n args: [params.buyer, params.deployment.vault],\n }),\n client.readContract({\n ...tokenRead,\n functionName: 'balanceOf',\n args: [params.buyer, params.deployment.tokenId],\n }),\n client.getBalance({ address: params.buyer, blockNumber }),\n client.readContract({ ...registryRead, functionName: 'isAllowed', args: [params.buyer] }),\n client.readContract({\n ...registryRead,\n functionName: 'isAuthorizedIssuer',\n args: [params.buyer],\n }),\n client.readContract({ ...tokenRead, functionName: 'isAccountFrozen', args: [params.buyer] }),\n client.readContract({ ...registryRead, functionName: 'getUserId', args: [params.buyer] }),\n ]);\n const traits = params.deployment.requiredGlobalTraits ?? [];\n const traitResults = await Promise.all(\n traits.map((trait) =>\n client.readContract({\n ...registryRead,\n functionName: 'hasGlobalTrait',\n args: [userId, trait],\n }),\n ),\n );\n const missingGlobalTraits = traits.filter((_, i) => !traitResults[i]);\n const blockers: PurchaseBlocker[] = [];\n if (!sameAddress(offering.issuerAdmin, params.deployment.vault))\n blockers.push('vault-not-issuer-admin');\n if (!offering.issuerAuthorized) blockers.push('issuer-revoked');\n if (offering.mintingPaused) blockers.push('minting-paused');\n if (offering.maxSupply !== 0n && params.amount > offering.maxSupply - offering.totalSupply)\n blockers.push('max-supply-exceeded');\n if (!isAllowed && !isAuthorizedIssuer) blockers.push('buyer-not-allowed');\n if (isAccountFrozen) blockers.push('buyer-frozen');\n if (traits.length > 0 && userId === zeroHash) blockers.push('missing-user-id');\n if (missingGlobalTraits.length > 0) blockers.push('missing-required-trait');\n if (paymentBalance < params.amount) blockers.push('insufficient-payment-balance');\n const approvals =\n allowance >= params.amount\n ? []\n : [\n ...(allowance > 0n ? [approvalStep(params, 'reset')] : []),\n approvalStep(params, 'approve'),\n ];\n return {\n ...result,\n buyer: {\n buyer: params.buyer,\n paymentBalance,\n allowance,\n tokenBalance,\n nativeBalance,\n isAllowed,\n isAuthorizedIssuer,\n isAccountFrozen,\n userId,\n missingGlobalTraits,\n },\n blockers,\n approvals,\n readyToSimulate: blockers.length === 0 && approvals.length === 0,\n request: buildPurchaseWriteRequest(params),\n transaction: buildPurchaseTransaction(params),\n };\n }\n\n async function simulatePurchase(input: PurchaseParams): Promise<PreparedPurchase> {\n const params = purchaseParams(input);\n const prepared = await preparePurchase(params);\n if (prepared.blockers.length > 0) {\n throw new OpacityPurchaseError(\n 'purchase-blocked',\n `Purchase prerequisites failed: ${prepared.blockers.join(', ')}.`,\n );\n }\n if (prepared.approvals.length > 0) {\n throw new OpacityPurchaseError(\n 'approval-required',\n 'Confirm the required approval steps, then simulate the deposit.',\n );\n }\n const client = await clientFor(params.deployment);\n try {\n // Latest state deliberately: this checks allowance, all policies and ERC1155 receipt.\n await client.simulateContract(prepared.request);\n } catch (cause) {\n throw new OpacityPurchaseError(\n 'simulation-failed',\n 'Vault deposit simulation failed; inspect cause for the decoded contract error.',\n { cause },\n );\n }\n return prepared;\n }\n\n async function exclusiveSend<T>(params: PurchaseParams, send: () => Promise<T>): Promise<T> {\n const key = `${params.deployment.chainId}:${params.deployment.vault}:${params.buyer}`;\n if (sendsInProgress.has(key))\n throw new OpacityPurchaseError(\n 'send-in-progress',\n 'Another wallet request for this buyer and vault is in progress.',\n );\n sendsInProgress.add(key);\n try {\n return await send();\n } finally {\n sendsInProgress.delete(key);\n }\n }\n\n async function sendApproval(\n input: PurchaseParams & { step: 'reset' | 'approve' },\n ): Promise<SubmittedPurchaseApproval> {\n const params = purchaseParams(input);\n const expectedStep = input.step;\n return exclusiveSend(params, async () => {\n await walletFor(params);\n const prepared = await preparePurchase(params);\n if (prepared.blockers.length > 0)\n throw new OpacityPurchaseError(\n 'purchase-blocked',\n `Purchase prerequisites failed: ${prepared.blockers.join(', ')}.`,\n );\n const step = prepared.approvals[0];\n if (!step || step.kind !== expectedStep) {\n throw new OpacityPurchaseError(\n 'approval-changed',\n 'Allowance changed or approval step is out of order; prepare the purchase again.',\n );\n }\n const client = await clientFor(params.deployment);\n const simulation = await client.simulateContract(step.request);\n if (simulation.result === false)\n throw new OpacityPurchaseError(\n 'simulation-failed',\n 'Payment token returned false from approve.',\n );\n const wallet = await walletFor(params);\n const hash = await wallet.writeContract({\n ...step.request,\n account: wallet.account ?? params.buyer,\n chain: sendChain(wallet, params.deployment.chainId),\n });\n return { ...params, kind: 'approval', step: step.kind, approvedAmount: step.amount, hash };\n });\n }\n\n async function sendPurchase(input: PurchaseParams): Promise<SubmittedPurchase> {\n const params = purchaseParams(input);\n return exclusiveSend(params, async () => {\n await walletFor(params);\n const prepared = await simulatePurchase(params);\n const wallet = await walletFor(params);\n const hash = await wallet.writeContract({\n ...prepared.request,\n account: wallet.account ?? params.buyer,\n chain: sendChain(wallet, params.deployment.chainId),\n });\n return { ...params, kind: 'purchase', hash };\n });\n }\n\n async function receiptFor(\n submitted: SubmittedPurchase | SubmittedPurchaseApproval,\n options: PurchaseWaitOptions,\n ): Promise<PurchaseReceiptResult> {\n const params = purchaseParams(submitted);\n const hash = bytes32(submitted.hash, 'hash', true) as Hash;\n for (const [name, value] of Object.entries(options)) {\n if (value !== undefined && (!Number.isSafeInteger(value) || value <= 0)) {\n throw new OpacityPurchaseError('invalid-input', `${name} must be a positive safe integer.`);\n }\n }\n const client = await clientFor(params.deployment);\n let replacementReason: PurchaseReceiptResult['replacementReason'];\n const receipt = await client.waitForTransactionReceipt({\n hash,\n ...(options.confirmations === undefined ? {} : { confirmations: options.confirmations }),\n ...(options.timeout === undefined ? {} : { timeout: options.timeout }),\n ...(options.pollingInterval === undefined\n ? {}\n : { pollingInterval: options.pollingInterval }),\n onReplaced: (replacement) => {\n replacementReason = replacement.reason;\n },\n });\n const replaced = receipt.transactionHash.toLowerCase() !== hash.toLowerCase();\n // Even repricing gets surfaced: the caller must inspect the returned record, not send again.\n return {\n status:\n replaced || replacementReason !== undefined\n ? 'replaced'\n : receipt.status === 'reverted'\n ? 'reverted'\n : 'unverified',\n submittedHash: hash,\n hash: receipt.transactionHash,\n receipt,\n ...(replacementReason === undefined ? {} : { replacementReason }),\n };\n }\n\n /** Timeout/RPC errors retain their cause and do not trigger any send. Resume with the same record. */\n async function waitForPurchase(\n submitted: SubmittedPurchase,\n options: PurchaseWaitOptions = {},\n ): Promise<PurchaseReceiptResult> {\n if (submitted.kind !== 'purchase')\n throw new OpacityPurchaseError('invalid-input', 'Expected a submitted purchase record.');\n const params = purchaseParams(submitted);\n const result = await receiptFor(submitted, options);\n if (result.status !== 'unverified') return result;\n if (!receiptMatches(result.receipt, params.buyer, params.deployment.vault)) return result;\n const client = await clientFor(params.deployment);\n const transaction = await client.getTransaction({ hash: result.hash });\n if (\n transaction.value !== 0n ||\n transaction.input.toLowerCase() !== buildPurchaseTransaction(params).data.toLowerCase()\n )\n return result;\n let deposited = false;\n let minted = false;\n for (const log of result.receipt.logs) {\n try {\n if (sameAddress(log.address, params.deployment.vault)) {\n const event = decodeEventLog({\n abi: securityTokenVaultAbi,\n eventName: 'Deposited',\n data: log.data,\n topics: log.topics,\n strict: true,\n });\n deposited ||=\n sameAddress(event.args.user, params.buyer) && event.args.amount === params.amount;\n }\n if (sameAddress(log.address, params.deployment.token)) {\n const event = decodeEventLog({\n abi: purchaseSecurityTokenAbi,\n eventName: 'TransferSingle',\n data: log.data,\n topics: log.topics,\n strict: true,\n });\n minted ||=\n sameAddress(event.args.operator, params.deployment.vault) &&\n sameAddress(event.args.from, zeroAddress) &&\n sameAddress(event.args.to, params.buyer) &&\n event.args.id === params.deployment.tokenId &&\n event.args.value === params.amount;\n }\n } catch {\n /* Other or malformed events are not purchase evidence. */\n }\n }\n return deposited && minted ? { ...result, status: 'confirmed' } : result;\n }\n\n async function waitForApproval(\n submitted: SubmittedPurchaseApproval,\n options: PurchaseWaitOptions = {},\n ): Promise<PurchaseReceiptResult> {\n if (submitted.kind !== 'approval')\n throw new OpacityPurchaseError('invalid-input', 'Expected a submitted approval record.');\n const params = purchaseParams(submitted);\n const expectedStep = approvalStep(params, submitted.step);\n if (\n (submitted.step !== 'reset' && submitted.step !== 'approve') ||\n submitted.approvedAmount !== expectedStep.amount\n ) {\n throw new OpacityPurchaseError(\n 'invalid-input',\n 'Approval record does not match its original step and amount.',\n );\n }\n const result = await receiptFor(submitted, options);\n if (result.status !== 'unverified') return result;\n if (!receiptMatches(result.receipt, params.buyer, params.deployment.paymentToken))\n return result;\n const client = await clientFor(params.deployment);\n const transaction = await client.getTransaction({ hash: result.hash });\n if (\n transaction.value !== 0n ||\n transaction.input.toLowerCase() !== expectedStep.transaction.data.toLowerCase()\n )\n return result;\n for (const log of result.receipt.logs) {\n if (!sameAddress(log.address, params.deployment.paymentToken)) continue;\n try {\n const event = decodeEventLog({\n abi: purchasePaymentTokenAbi,\n eventName: 'Approval',\n data: log.data,\n topics: log.topics,\n strict: true,\n });\n if (\n sameAddress(event.args.owner, params.buyer) &&\n sameAddress(event.args.spender, params.deployment.vault) &&\n event.args.value === submitted.approvedAmount\n ) {\n return { ...result, status: 'confirmed' };\n }\n } catch {\n /* Only a matching Approval is evidence of this step. */\n }\n }\n return result;\n }\n\n return {\n getOffering,\n quote,\n preparePurchase,\n simulatePurchase,\n sendApproval,\n sendPurchase,\n waitForApproval,\n waitForPurchase,\n };\n}\n\nfunction receiptMatches(receipt: TransactionReceipt, buyer: Address, target: Address): boolean {\n return receipt.to !== null && sameAddress(receipt.from, buyer) && sameAddress(receipt.to, target);\n}\n\nexport type OpacityPurchasesNamespace = ReturnType<typeof createPurchasesNamespace>;\n","// Generated by scripts/sync-issuer-artifacts.ts. Do not edit by hand.\n// Full ABIs include platform-only methods; exporting an ABI conveys no authority.\nexport const ISSUER_CONTRACTS_COMMIT = 'ee48b026312447f4b98259c5b69c5b3dd909e7ac';\nexport const ISSUER_CONTRACTS_PR = 'https://github.com/OpacityLabs/pilot-evm/pull/163';\nexport const issuerFactoryAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'UPGRADE_INTERFACE_VERSION',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\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: 'allowlistRegistry',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IAllowlistRegistry' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'beaconRegistry',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IBeaconRegistry' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'computeTokenAddress',\n inputs: [\n { name: 'issuer', type: 'address', internalType: 'address' },\n { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deployToken',\n inputs: [\n {\n name: 'config',\n type: 'tuple',\n internalType: 'struct ITokenFactory.TokenConfig',\n components: [\n { name: 'name', type: 'string', internalType: 'string' },\n { name: 'symbol', type: 'string', internalType: 'string' },\n { name: 'uri', type: 'string', internalType: 'string' },\n { name: 'pausedOnDeploy', type: 'bool', internalType: 'bool' },\n { name: 'beaconVariant', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n {\n name: 'engine',\n type: 'tuple',\n internalType: 'struct ITokenFactory.EngineDeployConfig',\n components: [\n { name: 'policyEngine', type: 'address', internalType: 'address' },\n { name: 'tokenTraitRegistry', type: 'address', internalType: 'address' },\n { name: 'issuerAdmin', type: 'address', internalType: 'address' },\n { name: 'overrideHelper', type: 'address', internalType: 'address' },\n {\n name: 'policies',\n type: 'tuple[]',\n internalType: 'struct IPolicyEngine.AttachedPolicy[]',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n },\n ],\n outputs: [{ name: 'tokenAddress', type: 'address', internalType: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'deployedTokens',\n inputs: [{ name: 'index', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deployedTokensCount',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getIssuerNonce',\n inputs: [{ name: 'issuer', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getIssuerTokens',\n inputs: [{ name: 'issuer', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'address[]', internalType: 'address[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'implementation',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n { name: 'initialOwner', type: 'address', internalType: 'address' },\n { name: 'allowlistRegistry_', type: 'address', internalType: 'address' },\n { name: 'beaconRegistry_', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'proxiableUUID',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'upgradeToAndCall',\n inputs: [\n { name: 'newImplementation', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'event',\n name: 'FactoryConfigured',\n inputs: [\n { name: 'allowlistRegistry', type: 'address', indexed: true, internalType: 'address' },\n { name: 'beaconRegistry', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n { name: 'oldOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'oldOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenDeployed',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'issuer', type: 'address', indexed: true, internalType: 'address' },\n { name: 'allowlistRegistry', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenDeployedWithEngine',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'policyEngine', type: 'address', indexed: false, internalType: 'address' },\n { name: 'tokenTraitRegistry', type: 'address', indexed: false, internalType: 'address' },\n { name: 'issuerAdmin', type: 'address', indexed: false, internalType: 'address' },\n { name: 'overrideHelper', type: 'address', indexed: false, internalType: 'address' },\n {\n name: 'initialPolicies',\n type: 'tuple[]',\n indexed: false,\n internalType: 'struct IPolicyEngine.AttachedPolicy[]',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Upgraded',\n inputs: [{ name: 'implementation', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{ name: 'target', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC1967InvalidImplementation',\n inputs: [{ name: 'implementation', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'ERC1967NonPayable', inputs: [] },\n { type: 'error', name: 'FailedCall', inputs: [] },\n { type: 'error', name: 'InvalidConfig', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'OwnershipTransferNotPending', inputs: [] },\n { type: 'error', name: 'PoliciesWithoutEngine', inputs: [] },\n { type: 'error', name: 'ReentrancyGuardReentrantCall', inputs: [] },\n { type: 'error', name: 'UUPSUnauthorizedCallContext', inputs: [] },\n {\n type: 'error',\n name: 'UUPSUnsupportedProxiableUUID',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'UnauthorizedIssuer', inputs: [] },\n { type: 'error', name: 'UnauthorizedOwner', inputs: [] },\n] as const;\nexport const issuerTokenAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'WALLET_ISSUER',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'WALLET_LP',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowlistRegistry',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IAllowlistRegistry' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOfBatch',\n inputs: [\n { name: 'accounts', type: 'address[]', internalType: 'address[]' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: '', type: 'uint256[]', internalType: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'canManagePolicies',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'canTransact',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'canTransfer',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'complianceAdmin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'executeMint',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeOperation',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeWithBypass',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'forcedTransfer',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getFrozenTokens',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getHolderCount',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getMaxSupply',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUserBalance',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'hasAttachedPolicies',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n { name: 'name_', type: 'string', internalType: 'string' },\n { name: 'symbol_', type: 'string', internalType: 'string' },\n { name: 'uri_', type: 'string', internalType: 'string' },\n { name: 'allowlistRegistry_', type: 'address', internalType: 'address' },\n { name: 'owner_', type: 'address', internalType: 'address' },\n { name: 'pausedOnDeploy_', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'initializeWithEngine',\n inputs: [\n { name: 'name_', type: 'string', internalType: 'string' },\n { name: 'symbol_', type: 'string', internalType: 'string' },\n { name: 'uri_', type: 'string', internalType: 'string' },\n { name: 'allowlistRegistry_', type: 'address', internalType: 'address' },\n { name: 'owner_', type: 'address', internalType: 'address' },\n { name: 'pausedOnDeploy_', type: 'bool', internalType: 'bool' },\n {\n name: 'engineInit',\n type: 'tuple',\n internalType: 'struct SecurityToken.EngineInit',\n components: [\n { name: 'policyEngine', type: 'address', internalType: 'address' },\n { name: 'tokenTraitRegistry', type: 'address', internalType: 'address' },\n { name: 'issuerAdmin', type: 'address', internalType: 'address' },\n { name: 'overrideHelper', type: 'address', internalType: 'address' },\n {\n name: 'policies',\n type: 'tuple[]',\n internalType: 'struct IPolicyEngine.AttachedPolicy[]',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isAccountFrozen',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isIssuerWallet',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isLpWallet',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'issuerAdmin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'mintingPaused',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'paused',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyEngine',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'safeBatchTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setAccountFrozen',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'frozen', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setFrozenTokens',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setIssuerAdmin',\n inputs: [{ name: 'newAdmin', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setMaxSupply',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'cap', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setMintingPaused',\n inputs: [{ name: 'mintingPaused_', type: 'bool', internalType: 'bool' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setName',\n inputs: [{ name: 'newName', type: 'string', internalType: 'string' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setPaused',\n inputs: [{ name: 'paused_', type: 'bool', internalType: 'bool' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setPolicyEngine',\n inputs: [{ name: 'newEngine', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setSymbol',\n inputs: [{ name: 'newSymbol', type: 'string', internalType: 'string' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setTokenTraitRegistry',\n inputs: [{ name: 'registry', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setTransferOperator',\n inputs: [{ name: 'newOperator', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setUri',\n inputs: [{ name: 'newUri', type: 'string', internalType: 'string' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setUserTraits',\n inputs: [\n { name: 'userIds', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setVenueOperator',\n inputs: [\n { name: 'venue', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setWallet',\n inputs: [\n { name: 'kind', type: 'uint8', internalType: 'uint8' },\n { name: 'accounts', type: 'address[]', internalType: 'address[]' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenTraitRegistry',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract ITokenTraitRegistry' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [{ name: 'id', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferOperator',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'uri',\n inputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'venueOperator',\n inputs: [{ name: 'venue', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AccountFrozen',\n inputs: [{ name: 'account', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AccountUnfrozen',\n inputs: [{ name: 'account', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'approved', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ForcedTransfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Frozen',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'IssuerAdminChanged',\n inputs: [\n { name: 'previousAdmin', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newAdmin', type: 'address', indexed: true, internalType: 'address' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'IssuerWalletSet',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'registered', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'LpWalletSet',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'registered', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'MaxSupplySet',\n inputs: [\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'previous', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'current', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Mint',\n inputs: [\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'MintingPaused',\n inputs: [{ name: 'by', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'MintingUnpaused',\n inputs: [{ name: 'by', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [{ name: 'by', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyEngineSet',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenNameChanged',\n inputs: [\n { name: 'previousName', type: 'string', indexed: false, internalType: 'string' },\n { name: 'newName', type: 'string', indexed: false, internalType: 'string' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenSymbolChanged',\n inputs: [\n { name: 'previousSymbol', type: 'string', indexed: false, internalType: 'string' },\n { name: 'newSymbol', type: 'string', indexed: false, internalType: 'string' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenTraitRegistrySet',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferBatch',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'ids', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n { name: 'values', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferOperatorSet',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferSingle',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'value', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'URI',\n inputs: [\n { name: 'value', type: 'string', indexed: false, internalType: 'string' },\n { name: 'id', type: 'uint256', indexed: true, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [{ name: 'by', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'VenueOperatorSet',\n inputs: [\n { name: 'venue', type: 'address', indexed: true, internalType: 'address' },\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'BurningDisabled', inputs: [] },\n {\n type: 'error',\n name: 'DuplicateTokenId',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'uint256' }],\n },\n {\n type: 'error',\n name: 'ERC1155InsufficientBalance',\n inputs: [\n { name: 'sender', type: 'address', internalType: 'address' },\n { name: 'balance', type: 'uint256', internalType: 'uint256' },\n { name: 'needed', type: 'uint256', internalType: 'uint256' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ERC1155InvalidApprover',\n inputs: [{ name: 'approver', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC1155InvalidArrayLength',\n inputs: [\n { name: 'idsLength', type: 'uint256', internalType: 'uint256' },\n { name: 'valuesLength', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ERC1155InvalidOperator',\n inputs: [{ name: 'operator', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC1155InvalidReceiver',\n inputs: [{ name: 'receiver', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC1155InvalidSender',\n inputs: [{ name: 'sender', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC1155MissingApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n ],\n },\n {\n type: 'error',\n name: 'ERC7943CannotTransact',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC7943CannotTransfer',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ERC7943InsufficientUnfrozenBalance',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'frozenBalance', type: 'uint256', internalType: 'uint256' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n },\n { type: 'error', name: 'EmptyString', inputs: [] },\n { type: 'error', name: 'InvalidAddress', inputs: [] },\n { type: 'error', name: 'InvalidConfig', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n { type: 'error', name: 'IssuerRevoked', inputs: [] },\n {\n type: 'error',\n name: 'MaxSupplyBelowOutstanding',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'currentSupply', type: 'uint256', internalType: 'uint256' },\n { name: 'requested', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'MaxSupplyExceeded',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'currentSupply', type: 'uint256', internalType: 'uint256' },\n { name: 'mintAmount', type: 'uint256', internalType: 'uint256' },\n { name: 'cap', type: 'uint256', internalType: 'uint256' },\n ],\n },\n { type: 'error', name: 'MintingIsPaused', inputs: [] },\n { type: 'error', name: 'NotAdmin', inputs: [] },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'NotOwner', inputs: [] },\n { type: 'error', name: 'NotOwnerOrPlatform', inputs: [] },\n { type: 'error', name: 'NotTransferOperator', inputs: [] },\n { type: 'error', name: 'PoliciesWithoutEngine', inputs: [] },\n { type: 'error', name: 'RecipientAccountFrozen', inputs: [] },\n { type: 'error', name: 'RecipientNotAllowed', inputs: [] },\n { type: 'error', name: 'ReentrancyGuardReentrantCall', inputs: [] },\n { type: 'error', name: 'TokenTraitRegistryNotSet', inputs: [] },\n {\n type: 'error',\n name: 'UnknownWalletKind',\n inputs: [{ name: 'kind', type: 'uint8', internalType: 'uint8' }],\n },\n] as const;\nexport const issuerRegistryAbi = [\n {\n type: 'function',\n name: 'ALLOWLIST_BATCH_FOR_USER_TYPEHASH',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'ALLOWLIST_BATCH_FOR_USER_WITH_TRAITS_TYPEHASH',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'MAX_BATCH_SIZE',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'MAX_EXPIRY_DURATION',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'MAX_SIGNER_RATE_WINDOW',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'MIGRATION_TYPEHASH',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'REMOVAL_TYPEHASH',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'SIGNER_ROTATION_TYPEHASH',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n { type: 'function', name: 'acceptAdmin', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'acceptComplianceAdmin',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'acceptOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'acceptPlatformOperator',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addToAllowlist',\n inputs: [\n { name: 'userAddress', type: 'address', internalType: 'address' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addToAllowlist',\n inputs: [{ name: 'userAddress', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addUserWithTraits',\n inputs: [\n { name: 'userAddress', type: 'address', internalType: 'address' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'traits', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addUsers',\n inputs: [\n {\n name: 'users',\n type: 'tuple[]',\n internalType: 'struct IAllowlistRegistry.UserAddresses[]',\n components: [\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'addresses', type: 'address[]', internalType: 'address[]' },\n ],\n },\n { name: 'nonces', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'signatures', type: 'bytes[]', internalType: 'bytes[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'addUsersWithTraits',\n inputs: [\n {\n name: 'users',\n type: 'tuple[]',\n internalType: 'struct IAllowlistRegistry.UserAddressesWithTraits[]',\n components: [\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'addresses', type: 'address[]', internalType: 'address[]' },\n { name: 'traits', type: 'bytes32[]', internalType: 'bytes32[]' },\n ],\n },\n { name: 'nonces', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'signatures', type: 'bytes[]', internalType: 'bytes[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'admin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'authorizedSigner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'availableSignerRate',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'batchAddUsersWithTraits',\n inputs: [\n {\n name: 'rows',\n type: 'tuple[]',\n internalType: 'struct IAllowlistRegistry.UserAddressesWithTraits[]',\n components: [\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'addresses', type: 'address[]', internalType: 'address[]' },\n { name: 'traits', type: 'bytes32[]', internalType: 'bytes32[]' },\n ],\n },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'batchRemove',\n inputs: [{ name: 'accounts', type: 'address[]', internalType: 'address[]' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'batchSetGlobalTrait',\n inputs: [\n { name: 'userIds', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'complianceAdmin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'defaultExpiryDuration',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'domainSeparator',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'enableTraitAsWriter',\n inputs: [\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getEntryExpiry',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint64', internalType: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getEntryStatus',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum AllowlistTypes.EntryStatus' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getSignerRateLimit',\n inputs: [],\n outputs: [\n { name: 'maxPerWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'windowSeconds', type: 'uint256', internalType: 'uint256' },\n { name: 'windowStart', type: 'uint256', internalType: 'uint256' },\n { name: 'spentInWindow', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUserAddressCount',\n inputs: [{ name: 'userId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUserAddresses',\n inputs: [{ name: 'userId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'address[]', internalType: 'address[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUserId',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'hasGlobalTrait',\n inputs: [\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n { name: 'owner_', type: 'address', internalType: 'address' },\n { name: 'admin_', type: 'address', internalType: 'address' },\n { name: 'complianceAdmin_', type: 'address', internalType: 'address' },\n { name: 'authorizedSigner_', type: 'address', internalType: 'address' },\n { name: 'platformOperator_', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isAllowed',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isAllowedBatch',\n inputs: [{ name: 'accounts', type: 'address[]', internalType: 'address[]' }],\n outputs: [{ name: 'allowed', type: 'bool[]', internalType: 'bool[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isAuthorizedIssuer',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isExpired',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isNonceUsed',\n inputs: [{ name: 'nonce', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isTeeEnableableTrait',\n inputs: [{ name: 'traitId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isTraitWriter',\n inputs: [{ name: 'writer', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isWriterEnableableTrait',\n inputs: [{ name: 'traitId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'migrateAddress',\n inputs: [\n { name: 'oldAddress', type: 'address', internalType: 'address' },\n { name: 'newAddress', type: 'address', internalType: 'address' },\n { name: 'nonce', type: 'bytes32', internalType: 'bytes32' },\n { name: 'signature', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n { type: 'function', name: 'pause', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'paused',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingPlatformOperator',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'platformOperator',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'removeFromAllowlist',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeOwnAddress',\n inputs: [\n { name: 'addressToRemove', type: 'address', internalType: 'address' },\n { name: 'nonce', type: 'bytes32', internalType: 'bytes32' },\n { name: 'signature', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'rotateAuthorizedSigner',\n inputs: [\n { name: 'newSigner', type: 'address', internalType: 'address' },\n { name: 'nonce', type: 'bytes32', internalType: 'bytes32' },\n { name: 'signature', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'sandboxAddSelf',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'sandboxRegisterIssuer',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'sandboxSetSelfTrait',\n inputs: [\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'sandboxVersion',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'setAdmin',\n inputs: [{ name: 'newAdmin', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setAuthorizedIssuer',\n inputs: [\n { name: 'issuer', type: 'address', internalType: 'address' },\n { name: 'authorized', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setAuthorizedSigner',\n inputs: [{ name: 'newSigner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setComplianceAdmin',\n inputs: [{ name: 'newComplianceAdmin', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setDefaultExpiryDuration',\n inputs: [{ name: 'duration', type: 'uint256', internalType: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setEntryExpiry',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'expiresAt', type: 'uint64', internalType: 'uint64' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setEntryExpiryBatch',\n inputs: [\n { name: 'accounts', type: 'address[]', internalType: 'address[]' },\n { name: 'expiresAt', type: 'uint64', internalType: 'uint64' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setGlobalTrait',\n inputs: [\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOwner',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setPlatformOperator',\n inputs: [{ name: 'newOperator', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setSignerRateLimit',\n inputs: [\n { name: 'maxPerWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'windowSeconds', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setTeeEnableableTrait',\n inputs: [\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'allowed', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setTeeEnableableTraitBatch',\n inputs: [\n { name: 'traitIds', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'allowed', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setTeeTraitAllowlistEnforced',\n inputs: [{ name: 'enforced', type: 'bool', internalType: 'bool' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setTraitExpiryDuration',\n inputs: [\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'duration', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setTraitWriter',\n inputs: [\n { name: 'writer', type: 'address', internalType: 'address' },\n { name: 'allowed', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setWriterEnableableTrait',\n inputs: [\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'allowed', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'teeTraitAllowlistEnforced',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'traitExpiryDuration',\n inputs: [{ name: 'traitId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n { type: 'function', name: 'unpause', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'event',\n name: 'AddressAllowlisted',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'addedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AddressMigrated',\n inputs: [\n { name: 'oldAddress', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newAddress', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AddressRemoved',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'removedBy', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AddressSelfRemoved',\n inputs: [{ name: 'account', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AdminTransferStarted',\n inputs: [\n { name: 'oldAdmin', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newAdmin', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AdminUpdated',\n inputs: [\n { name: 'oldAdmin', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newAdmin', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AuthorizedSignerUpdated',\n inputs: [\n { name: 'oldSigner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newSigner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BatchAddCompleted',\n inputs: [\n { name: 'count', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'addedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BatchRemoveCompleted',\n inputs: [{ name: 'count', type: 'uint256', indexed: false, internalType: 'uint256' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BatchRowSkipped',\n inputs: [\n { name: 'index', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'nonce', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ComplianceAdminTransferStarted',\n inputs: [\n { name: 'oldAdmin', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newAdmin', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ComplianceAdminUpdated',\n inputs: [\n { name: 'oldAdmin', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newAdmin', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DefaultExpiryDurationUpdated',\n inputs: [\n { name: 'oldDuration', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'newDuration', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'EntryExpiryUpdated',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'expiresAt', type: 'uint64', indexed: false, internalType: 'uint64' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'GlobalTraitSet',\n inputs: [\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'traitId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', indexed: false, internalType: 'bool' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'IssuerAuthorized',\n inputs: [{ name: 'issuer', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'IssuerRevoked',\n inputs: [{ name: 'issuer', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnerUpdated',\n inputs: [\n { name: 'oldOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n { name: 'oldOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [{ name: 'account', type: 'address', indexed: false, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PlatformOperatorTransferStarted',\n inputs: [\n { name: 'oldOperator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOperator', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PlatformOperatorUpdated',\n inputs: [\n { name: 'oldOperator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOperator', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'SignerRateConsumed',\n inputs: [\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'newSpent', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'maxPerWindow', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'SignerRateLimitSet',\n inputs: [\n { name: 'maxPerWindow', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'windowSeconds', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TeeEnableableTraitSet',\n inputs: [\n { name: 'traitId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'allowed', type: 'bool', indexed: false, internalType: 'bool' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TeeTraitAllowlistEnforcementSet',\n inputs: [\n { name: 'enforced', type: 'bool', indexed: false, internalType: 'bool' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TraitExpiryDurationUpdated',\n inputs: [\n { name: 'traitId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'duration', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TraitWriterSet',\n inputs: [\n { name: 'writer', type: 'address', indexed: true, internalType: 'address' },\n { name: 'allowed', type: 'bool', indexed: false, internalType: 'bool' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [{ name: 'account', type: 'address', indexed: false, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'UserIdAssigned',\n inputs: [\n { name: 'account', type: 'address', indexed: true, internalType: 'address' },\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'assignedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WriterEnableableTraitSet',\n inputs: [\n { name: 'traitId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'allowed', type: 'bool', indexed: false, internalType: 'bool' },\n { name: 'updatedBy', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AddressNotEligible',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'AddressNotRemovable',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'AddressNotVerified',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'AdminTransferNotPending', inputs: [] },\n { type: 'error', name: 'ArrayLengthMismatch', inputs: [] },\n { type: 'error', name: 'BatchTooLarge', inputs: [] },\n { type: 'error', name: 'ComplianceAdminTransferNotPending', inputs: [] },\n { type: 'error', name: 'EmptyBatch', inputs: [] },\n { type: 'error', name: 'EnforcedPause', inputs: [] },\n { type: 'error', name: 'ExpectedPause', inputs: [] },\n { type: 'error', name: 'ExpiryDurationTooLong', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n { type: 'error', name: 'InvalidSigner', inputs: [] },\n { type: 'error', name: 'InvalidSignerRateConfig', inputs: [] },\n { type: 'error', name: 'InvalidTraitId', inputs: [] },\n { type: 'error', name: 'InvalidUserId', inputs: [] },\n {\n type: 'error',\n name: 'IssuerAlreadyAuthorized',\n inputs: [{ name: 'issuer', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'IssuerNotAuthorized',\n inputs: [{ name: 'issuer', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'MigrationSourceNotEligible',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'MigrationTargetNotFresh',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'NonceAlreadyUsed', inputs: [] },\n {\n type: 'error',\n name: 'NotAllowlisted',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'NotTraitWriter', inputs: [] },\n { type: 'error', name: 'OwnershipTransferNotPending', inputs: [] },\n { type: 'error', name: 'PlatformOperatorTransferNotPending', inputs: [] },\n {\n type: 'error',\n name: 'SignerRateLimitExceeded',\n inputs: [\n { name: 'maxPerWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'spentInWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n },\n { type: 'error', name: 'SignerUnchanged', inputs: [] },\n { type: 'error', name: 'TooManyTraits', inputs: [] },\n {\n type: 'error',\n name: 'TraitNotTeeEnableable',\n inputs: [{ name: 'traitId', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'TraitNotWriterEnableable', inputs: [] },\n { type: 'error', name: 'UnauthorizedAdmin', inputs: [] },\n { type: 'error', name: 'UnauthorizedComplianceAdmin', inputs: [] },\n { type: 'error', name: 'UnauthorizedOwner', inputs: [] },\n {\n type: 'error',\n name: 'UserIdAlreadyAssigned',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'existingUserId', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const;\nexport const issuerBeaconRegistryAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'initialOwner', type: 'address', internalType: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'MIGRATION_TIMELOCK',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'cancelMigration',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeMigration',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getBeacon',\n inputs: [{ name: 'variantId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getDefaultVariant',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPendingMigration',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [\n { name: 'newVariantId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'readyAt', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRegisteredVariants',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTokenVariant',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isAuthorizedFactory',\n inputs: [{ name: 'factory', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isVariantActive',\n inputs: [{ name: 'variantId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'proposeMigration',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'newVariantId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'recordTokenVariant',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'variantId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'registerBeacon',\n inputs: [\n { name: 'variantId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'beacon', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'registeredVariantsCount',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\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: 'setDefaultVariant',\n inputs: [{ name: 'variantId', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setFactoryAuthorized',\n inputs: [\n { name: 'factory', type: 'address', internalType: 'address' },\n { name: 'authorized', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setVariantActive',\n inputs: [\n { name: 'variantId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'active', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'BeaconRegistered',\n inputs: [\n { name: 'variantId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'beacon', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BeaconStatusChanged',\n inputs: [\n { name: 'variantId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'active', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DefaultVariantChanged',\n inputs: [\n { name: 'oldVariant', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'newVariant', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'FactoryAuthorized',\n inputs: [\n { name: 'factory', type: 'address', indexed: true, internalType: 'address' },\n { name: 'authorized', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'MigrationCancelled',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'cancelledVariantId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'MigrationProposed',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newVariantId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'readyAt', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'previousOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenMigrated',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'oldVariant', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'newVariant', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenVariantRecorded',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'variantId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'InactiveBeaconVariant',\n inputs: [{ name: 'variantId', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'InvalidBeaconAddress', inputs: [] },\n {\n type: 'error',\n name: 'InvalidBeaconVariant',\n inputs: [{ name: 'variantId', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'InvalidTokenAddress', inputs: [] },\n {\n type: 'error',\n name: 'MigrationAlreadyPending',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'MigrationTimelockNotElapsed',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'readyAt', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'NoMigrationPending',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'SameVariantMigration',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'variantId', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n {\n type: 'error',\n name: 'TokenNotRecorded',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'UnauthorizedFactory', inputs: [] },\n {\n type: 'error',\n name: 'VariantAlreadyRecorded',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'VariantAlreadyRegistered',\n inputs: [{ name: 'variantId', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'ZeroVariantId', inputs: [] },\n] as const;\nexport const issuerPolicyEngineAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'UPGRADE_INTERFACE_VERSION',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\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: 'applyPolicyBatch',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n {\n name: 'ops',\n type: 'tuple[]',\n internalType: 'struct IPolicyEngine.BatchOp[]',\n components: [\n { name: 'opType', type: 'uint8', internalType: 'enum IPolicyEngine.BatchOpType' },\n { name: 'index', type: 'uint256', internalType: 'uint256' },\n {\n name: 'attached',\n type: 'tuple',\n internalType: 'struct IPolicyEngine.AttachedPolicy',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n { name: 'newConfig', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'attachPolicy',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n {\n name: 'p',\n type: 'tuple',\n internalType: 'struct IPolicyEngine.AttachedPolicy',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n outputs: [{ name: 'index', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'detachPolicy',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'index', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'detachPolicyByImpl',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'impl', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'detachPolicyByImplAndScopeKey',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'evaluate',\n inputs: [\n {\n name: 'args',\n type: 'tuple',\n internalType: 'struct IPolicyEngine.EvalArgs',\n components: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'supplies', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'explainEvaluate',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n {\n name: 'args',\n type: 'tuple',\n internalType: 'struct IPolicyEngine.EvalArgs',\n components: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'supplies', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'failingIdx', type: 'uint256', internalType: 'uint256' },\n { name: 'advisoryCode', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'finalizeInitialPolicies',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'findPolicyIndex',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'impl', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPolicies',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [\n {\n name: '',\n type: 'tuple[]',\n internalType: 'struct IPolicyEngine.AttachedPolicy[]',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPolicy',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'idx', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct IPolicyEngine.AttachedPolicy',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n { name: 'initialOwner', type: 'address', internalType: 'address' },\n { name: 'initialPolicyRegistry', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isPrivilegedSender',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxPolicies',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingInitialPolicies',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [\n {\n name: '',\n type: 'tuple[]',\n internalType: 'struct IPolicyEngine.AttachedPolicy[]',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingOwner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policiesLength',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyRegistry',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'proxiableUUID',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'queueInitialPolicies',\n inputs: [\n {\n name: 'policies',\n type: 'tuple[]',\n internalType: 'struct IPolicyEngine.AttachedPolicy[]',\n components: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'reconfigurePolicy',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'index', type: 'uint256', internalType: 'uint256' },\n { name: 'newConfig', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setMaxPolicies',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'cap', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setPolicyRegistry',\n inputs: [{ name: 'registry', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setPrivilegedSenders',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'userIds', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'privileged', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'upgradeToAndCall',\n inputs: [\n { name: 'newImplementation', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'MaxPoliciesSet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'previous', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'current', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'pending', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyAttached',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'index', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'impl', type: 'address', indexed: true, internalType: 'address' },\n { name: 'policyType', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n { name: 'guardTrait', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', indexed: false, internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', indexed: false, internalType: 'bool' },\n { name: 'config', type: 'bytes', indexed: false, internalType: 'bytes' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyDetached',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'index', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'impl', type: 'address', indexed: true, internalType: 'address' },\n { name: 'policyType', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyReconfigured',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'index', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'impl', type: 'address', indexed: true, internalType: 'address' },\n { name: 'policyType', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n { name: 'newConfig', type: 'bytes', indexed: false, internalType: 'bytes' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyRegistrySet',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PrivilegedSenderSet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'privileged', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Upgraded',\n inputs: [{ name: 'implementation', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{ name: 'target', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'DuplicateAttachment',\n inputs: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n {\n type: 'error',\n name: 'ERC1967InvalidImplementation',\n inputs: [{ name: 'implementation', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'ERC1967NonPayable', inputs: [] },\n { type: 'error', name: 'FailedCall', inputs: [] },\n { type: 'error', name: 'InitialPoliciesAlreadyQueued', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n {\n type: 'error',\n name: 'InvalidPolicyIndex',\n inputs: [{ name: 'index', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'InvalidUserId', inputs: [] },\n { type: 'error', name: 'NoPendingPolicies', inputs: [] },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'NotOwner', inputs: [] },\n { type: 'error', name: 'OwnershipTransferNotPending', inputs: [] },\n {\n type: 'error',\n name: 'PolicyNoLongerApproved',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'PolicyNotApproved',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'PolicyRegistryNotSet', inputs: [] },\n { type: 'error', name: 'TokenTraitRegistryNotSet', inputs: [] },\n {\n type: 'error',\n name: 'TooManyPolicies',\n inputs: [{ name: 'max', type: 'uint256', internalType: 'uint256' }],\n },\n {\n type: 'error',\n name: 'TransferBlockedByPolicy',\n inputs: [{ name: 'index', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'UUPSUnauthorizedCallContext', inputs: [] },\n {\n type: 'error',\n name: 'UUPSUnsupportedProxiableUUID',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'UnauthorizedPolicyAdmin', inputs: [] },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const;\nexport const issuerPolicyRegistryAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'allowlistRegistry_', type: 'address', internalType: 'address' },\n { name: 'timelockDelay_', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowlistRegistry',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IAllowlistRegistry' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'cancelApproval',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeApproval',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'implementationsOf',\n inputs: [{ name: 'policyType_', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'address[]', internalType: 'address[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isApproved',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingApprovalReadyAt',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyTypeOf',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'proposeApproval',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokePolicy',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'timelockDelay',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'PolicyApprovalCancelled',\n inputs: [\n { name: 'impl', type: 'address', indexed: true, internalType: 'address' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyApprovalProposed',\n inputs: [\n { name: 'impl', type: 'address', indexed: true, internalType: 'address' },\n { name: 'policyType', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'readyAt', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyApproved',\n inputs: [\n { name: 'impl', type: 'address', indexed: true, internalType: 'address' },\n { name: 'policyType', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyRevoked',\n inputs: [\n { name: 'impl', type: 'address', indexed: true, internalType: 'address' },\n { name: 'policyType', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AlreadyApproved',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ApprovalAlreadyProposed',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'NoApprovalProposed',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'NotAPolicy',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'NotAdmin', inputs: [] },\n {\n type: 'error',\n name: 'NotApproved',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'PolicyCodeHashChanged',\n inputs: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'expected', type: 'bytes32', internalType: 'bytes32' },\n { name: 'actual', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n {\n type: 'error',\n name: 'PolicyTypeChanged',\n inputs: [\n { name: 'impl', type: 'address', internalType: 'address' },\n { name: 'expected', type: 'bytes32', internalType: 'bytes32' },\n { name: 'actual', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n {\n type: 'error',\n name: 'TimelockNotReady',\n inputs: [{ name: 'readyAt', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const;\nexport const issuerTokenTraitRegistryAbi = [\n {\n type: 'function',\n name: 'MAX_BATCH_SIZE',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'batchSetTrait',\n inputs: [\n { name: 'userIds', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'hasTrait',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setTrait',\n inputs: [\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'traitId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'TokenTraitSet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'traitId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'enabled', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'BatchTooLarge',\n inputs: [\n { name: 'size', type: 'uint256', internalType: 'uint256' },\n { name: 'max', type: 'uint256', internalType: 'uint256' },\n ],\n },\n { type: 'error', name: 'EmptyBatch', inputs: [] },\n { type: 'error', name: 'InvalidTraitId', inputs: [] },\n { type: 'error', name: 'InvalidUserId', inputs: [] },\n] as const;\nexport const issuerRuleSetOrchestratorAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'UPGRADE_INTERFACE_VERSION',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'acceptAllowlistPlatformOperator',\n inputs: [{ name: 'registry', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'acceptOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'activeSnapshot',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'applyRuleSet',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n {\n name: 'rules',\n type: 'tuple[]',\n internalType: 'struct IRuleSetOrchestrator.Rule[]',\n components: [\n { name: 'ruleType', type: 'uint8', internalType: 'enum IRuleSetOrchestrator.RuleType' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n ],\n },\n ],\n outputs: [{ name: 'snapshotId', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authorizedDeployer',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deploymentCount',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getActiveRules',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [\n {\n name: 'rules',\n type: 'tuple[]',\n internalType: 'struct IRuleSetOrchestrator.Rule[]',\n components: [\n { name: 'ruleType', type: 'uint8', internalType: 'enum IRuleSetOrchestrator.RuleType' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n { name: 'initialOwner', type: 'address', internalType: 'address' },\n { name: 'initialDeployer', type: 'address', internalType: 'address' },\n { name: 'initialPolicyEngine', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingOwner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyEngine',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyImpl',\n inputs: [\n { name: 'ruleType', type: 'uint8', internalType: 'enum IRuleSetOrchestrator.RuleType' },\n ],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'proxiableUUID',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setAuthorizedDeployer',\n inputs: [{ name: 'deployer', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setPolicyEngine',\n inputs: [{ name: 'newEngine', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setPolicyImpl',\n inputs: [\n { name: 'ruleType', type: 'uint8', internalType: 'enum IRuleSetOrchestrator.RuleType' },\n { name: 'impl', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'upgradeToAndCall',\n inputs: [\n { name: 'newImplementation', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'event',\n name: 'AuthorizedDeployerSet',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n { name: 'previousOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'previousOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyEngineSet',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PolicyImplSet',\n inputs: [\n {\n name: 'ruleType',\n type: 'uint8',\n indexed: true,\n internalType: 'enum IRuleSetOrchestrator.RuleType',\n },\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RuleSetApplied',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'snapshotId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'deployer', type: 'address', indexed: true, internalType: 'address' },\n { name: 'deploymentId', type: 'uint256', indexed: false, internalType: 'uint256' },\n {\n name: 'rules',\n type: 'tuple[]',\n indexed: false,\n internalType: 'struct IRuleSetOrchestrator.Rule[]',\n components: [\n { name: 'ruleType', type: 'uint8', internalType: 'enum IRuleSetOrchestrator.RuleType' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n { name: 'guardTraitIsGlobal', type: 'bool', internalType: 'bool' },\n ],\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Upgraded',\n inputs: [{ name: 'implementation', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{ name: 'target', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC1967InvalidImplementation',\n inputs: [{ name: 'implementation', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'ERC1967NonPayable', inputs: [] },\n {\n type: 'error',\n name: 'EngineMismatch',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'orchestratorEngine', type: 'address', internalType: 'address' },\n { name: 'tokenEngine', type: 'address', internalType: 'address' },\n ],\n },\n { type: 'error', name: 'FailedCall', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'NotOwner', inputs: [] },\n { type: 'error', name: 'OwnershipTransferNotPending', inputs: [] },\n {\n type: 'error',\n name: 'PolicyImplAlreadyWired',\n inputs: [\n { name: 'impl', type: 'address', internalType: 'address' },\n {\n name: 'existingRuleType',\n type: 'uint8',\n internalType: 'enum IRuleSetOrchestrator.RuleType',\n },\n ],\n },\n {\n type: 'error',\n name: 'PolicyImplNotSet',\n inputs: [\n { name: 'ruleType', type: 'uint8', internalType: 'enum IRuleSetOrchestrator.RuleType' },\n ],\n },\n { type: 'error', name: 'ReentrancyGuardReentrantCall', inputs: [] },\n { type: 'error', name: 'UUPSUnauthorizedCallContext', inputs: [] },\n {\n type: 'error',\n name: 'UUPSUnsupportedProxiableUUID',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n },\n {\n type: 'error',\n name: 'Unauthorized',\n inputs: [{ name: 'caller', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'UnknownPolicyImpl',\n inputs: [{ name: 'impl', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'WrongPolicyType',\n inputs: [\n { name: 'ruleType', type: 'uint8', internalType: 'enum IRuleSetOrchestrator.RuleType' },\n { name: 'expected', type: 'bytes32', internalType: 'bytes32' },\n { name: 'actual', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const;\nexport const issuerVaultAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_token', type: 'address', internalType: 'address' },\n { name: '_tokenId', type: 'uint256', internalType: 'uint256' },\n { name: '_stablecoin', type: 'address', internalType: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'deposit',\n inputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC1155BatchReceived',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'stablecoin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IERC20' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'token',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract SecurityToken' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenId',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Deposited',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdrawn',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'InsufficientBalance', inputs: [] },\n {\n type: 'error',\n name: 'SafeERC20FailedOperation',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'ZeroAmount', inputs: [] },\n] as const;\nexport const issuerSandboxVaultAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'token_', type: 'address', internalType: 'address' },\n { name: 'tokenId_', type: 'uint256', internalType: 'uint256' },\n { name: 'stablecoin_', type: 'address', internalType: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'deposit',\n inputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeAdmin',\n inputs: [\n { name: 'target', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: 'result', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeTokenAdmin',\n inputs: [{ name: 'data', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: 'result', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC1155BatchReceived',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'stablecoin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IERC20' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'token',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract SecurityToken' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenId',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'AdminExecuted',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'target', type: 'address', indexed: true, internalType: 'address' },\n { name: 'selector', type: 'bytes4', indexed: true, internalType: 'bytes4' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Deposited',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdrawn',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'InsufficientBalance', inputs: [] },\n { type: 'error', name: 'InvalidStablecoin', inputs: [] },\n { type: 'error', name: 'InvalidToken', inputs: [] },\n { type: 'error', name: 'NotTokenOwner', inputs: [] },\n {\n type: 'error',\n name: 'SafeERC20FailedOperation',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'UnsupportedSandboxRegistry', inputs: [] },\n { type: 'error', name: 'ZeroAmount', inputs: [] },\n] as const;\nexport const issuerOverrideHelperAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'MAX_OVERRIDE_FLOW_WINDOW',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'OVERRIDE_DOMAIN_SEPARATOR',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'OVERRIDE_TYPEHASH',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'UPGRADE_INTERFACE_VERSION',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\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: 'availableOverrideFlow',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOverrideFlowLimit',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct OverrideHelper.OverrideFlowLimit',\n components: [\n { name: 'maxPerWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'windowSeconds', type: 'uint256', internalType: 'uint256' },\n { name: 'windowStart', type: 'uint256', internalType: 'uint256' },\n { name: 'spentInWindow', type: 'uint256', internalType: 'uint256' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [{ name: 'initialOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isOverrideNonceUsed',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'nonce', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isOverrideSigner',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'account', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mintWithAuth',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'nonce', type: 'bytes32', internalType: 'bytes32' },\n { name: 'sig', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pendingOwner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'proxiableUUID',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'safeTransferFromWithAuth',\n inputs: [\n {\n name: 't',\n type: 'tuple',\n internalType: 'struct OverrideHelper.AuthTransfer',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'nonce', type: 'bytes32', internalType: 'bytes32' },\n { name: 'sig', type: 'bytes', internalType: 'bytes' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFromWithOverride',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n {\n name: 'ovr',\n type: 'tuple',\n internalType: 'struct OverrideHelper.Override',\n components: [\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'nonce', type: 'bytes32', internalType: 'bytes32' },\n { name: 'expiry', type: 'uint256', internalType: 'uint256' },\n ],\n },\n { name: 'sig', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOverrideFlowLimit',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'maxPerWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'windowSeconds', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOverrideSigner',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'signer', type: 'address', internalType: 'address' },\n { name: 'authorized', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'upgradeToAndCall',\n inputs: [\n { name: 'newImplementation', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OverrideFlowConsumed',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'newSpent', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'maxPerWindow', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OverrideFlowLimitSet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'maxPerWindow', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'windowSeconds', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OverrideSignerSet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'signer', type: 'address', indexed: true, internalType: 'address' },\n { name: 'authorized', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferStarted',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'pending', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'previous', type: 'address', indexed: true, internalType: 'address' },\n { name: 'current', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferWithOverride',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'nonce', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Upgraded',\n inputs: [{ name: 'implementation', type: 'address', indexed: true, internalType: 'address' }],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{ name: 'target', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC1967InvalidImplementation',\n inputs: [{ name: 'implementation', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'ERC1967NonPayable', inputs: [] },\n { type: 'error', name: 'FailedCall', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n { type: 'error', name: 'InvalidOverrideFlowLimitConfig', inputs: [] },\n { type: 'error', name: 'InvalidOverrideSigner', inputs: [] },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'NotOwner', inputs: [] },\n { type: 'error', name: 'NotTokenHolder', inputs: [] },\n {\n type: 'error',\n name: 'OverrideExpired',\n inputs: [{ name: 'expiry', type: 'uint256', internalType: 'uint256' }],\n },\n {\n type: 'error',\n name: 'OverrideFlowLimitExceeded',\n inputs: [\n { name: 'maxPerWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'spentInWindow', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n },\n { type: 'error', name: 'OverrideMismatch', inputs: [] },\n {\n type: 'error',\n name: 'OverrideNonceReused',\n inputs: [{ name: 'nonce', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'OwnershipTransferNotPending', inputs: [] },\n {\n type: 'error',\n name: 'RecipientNotOnboarded',\n inputs: [{ name: 'to', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'ReentrancyGuardReentrantCall', inputs: [] },\n { type: 'error', name: 'UUPSUnauthorizedCallContext', inputs: [] },\n {\n type: 'error',\n name: 'UUPSUnsupportedProxiableUUID',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n },\n { type: 'error', name: 'UnauthorizedPolicyAdmin', inputs: [] },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const;\nexport const issuerAdapterAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'token_', type: 'address', internalType: 'address' },\n { name: 'id_', type: 'uint256', internalType: 'uint256' },\n { name: 'name_', type: 'string', internalType: 'string' },\n { name: 'symbol_', type: 'string', internalType: 'string' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'id',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'token',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract SecurityToken' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'value', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'value', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'ERC20InsufficientAllowance',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'allowance', type: 'uint256', internalType: 'uint256' },\n { name: 'needed', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ERC20InsufficientBalance',\n inputs: [\n { name: 'sender', type: 'address', internalType: 'address' },\n { name: 'balance', type: 'uint256', internalType: 'uint256' },\n { name: 'needed', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ERC20InvalidApprover',\n inputs: [{ name: 'approver', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC20InvalidReceiver',\n inputs: [{ name: 'receiver', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC20InvalidSender',\n inputs: [{ name: 'sender', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC20InvalidSpender',\n inputs: [{ name: 'spender', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'InvalidToken', inputs: [] },\n] as const;\nexport const issuerLensAbi = [\n {\n type: 'function',\n name: 'explainRestriction',\n inputs: [\n { name: 'token', type: 'address', internalType: 'contract SecurityToken' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n { name: 'failingPolicyIdx', type: 'uint256', internalType: 'uint256' },\n { name: 'advisoryCode', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n] as const;\nexport const issuerPaymentTokenAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'value', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'value', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'ERC20InsufficientAllowance',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'allowance', type: 'uint256', internalType: 'uint256' },\n { name: 'needed', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ERC20InsufficientBalance',\n inputs: [\n { name: 'sender', type: 'address', internalType: 'address' },\n { name: 'balance', type: 'uint256', internalType: 'uint256' },\n { name: 'needed', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ERC20InvalidApprover',\n inputs: [{ name: 'approver', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC20InvalidReceiver',\n inputs: [{ name: 'receiver', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC20InvalidSender',\n inputs: [{ name: 'sender', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'ERC20InvalidSpender',\n inputs: [{ name: 'spender', type: 'address', internalType: 'address' }],\n },\n] as const;\nexport const issuerPolicyModuleAbis = {\n tradingDisabled: [\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n ],\n allowedTransferee: [\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n { type: 'error', name: 'EmptyTraitList', inputs: [] },\n ],\n holderCountCap: [\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n { type: 'error', name: 'InvalidMaxHolders', inputs: [] },\n ],\n floorBalance: [\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'clearTokenState',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'floorCount',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFloor',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'scopedKeyAt',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'idx', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'scopedKeyCount',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'scopedKeys',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setFloor',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'floor', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'event',\n name: 'FloorSet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'floor', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenStateCleared',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'ConfigNotEmpty', inputs: [] },\n {\n type: 'error',\n name: 'UnauthorizedTokenAdmin',\n inputs: [\n { name: 'caller', type: 'address', internalType: 'address' },\n { name: 'token', type: 'address', internalType: 'address' },\n ],\n },\n ],\n ceilingBalance: [\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'clearTokenState',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'clearUserCeilingOverride',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'getUserCeilingOverride',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [\n { name: 'ceiling', type: 'uint256', internalType: 'uint256' },\n { name: 'isSet', type: 'bool', internalType: 'bool' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'overrideCount',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'scopedKeyAt',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'idx', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'scopedKeyCount',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'scopedKeys',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setUserCeilingOverride',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'ceiling', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'event',\n name: 'TokenStateCleared',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'UserCeilingOverrideCleared',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'UserCeilingOverrideSet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'ceiling', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'DenominatorModeOnlyForPercentage', inputs: [] },\n { type: 'error', name: 'InvalidCeiling', inputs: [] },\n {\n type: 'error',\n name: 'PercentageOverflow',\n inputs: [{ name: 'bps', type: 'uint256', internalType: 'uint256' }],\n },\n {\n type: 'error',\n name: 'UnauthorizedTokenAdmin',\n inputs: [\n { name: 'caller', type: 'address', internalType: 'address' },\n { name: 'token', type: 'address', internalType: 'address' },\n ],\n },\n ],\n denylist: [\n {\n type: 'function',\n name: 'batchSetBlocked',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userIds', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'blocked', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'blockedCount',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'clearTokenState',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'isBlocked',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'scopedKeyAt',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'idx', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'scopedKeyCount',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'scopedKeys',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setBlocked',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'blocked', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'event',\n name: 'DenylistEntrySet',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'userId', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'blocked', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenStateCleared',\n inputs: [\n { name: 'token', type: 'address', indexed: true, internalType: 'address' },\n { name: 'scopeKey', type: 'bytes32', indexed: true, internalType: 'bytes32' },\n { name: 'by', type: 'address', indexed: false, internalType: 'address' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'ConfigNotEmpty', inputs: [] },\n {\n type: 'error',\n name: 'UnauthorizedTokenAdmin',\n inputs: [\n { name: 'caller', type: 'address', internalType: 'address' },\n { name: 'token', type: 'address', internalType: 'address' },\n ],\n },\n ],\n insiderFreeze: [\n {\n type: 'function',\n name: 'MAX_FROZEN_TRAITS',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n { type: 'error', name: 'EmptyFrozenTraits', inputs: [] },\n {\n type: 'error',\n name: 'InvalidFrozenTrait',\n inputs: [{ name: 'index', type: 'uint256', internalType: 'uint256' }],\n },\n {\n type: 'error',\n name: 'TooManyFrozenTraits',\n inputs: [\n { name: 'provided', type: 'uint256', internalType: 'uint256' },\n { name: 'max', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'TraitRegistryNotSet',\n inputs: [{ name: 'token', type: 'address', internalType: 'address' }],\n },\n ],\n selfTransferOnly: [\n {\n type: 'function',\n name: 'check',\n inputs: [\n {\n name: 'ctx',\n type: 'tuple',\n internalType: 'struct IPolicy.TransferContext',\n components: [\n { name: 'token', type: 'address', internalType: 'address' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'fromUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'toUserId', type: 'bytes32', internalType: 'bytes32' },\n { name: 'scopeKey', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'supply', type: 'uint256', internalType: 'uint256' },\n { name: 'isMint', type: 'bool', internalType: 'bool' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n { name: 'guardTrait', type: 'bytes32', internalType: 'bytes32' },\n { name: 'guardMode', type: 'uint8', internalType: 'enum IPolicy.GuardMode' },\n ],\n },\n ],\n outputs: [\n { name: 'ok', type: 'bool', internalType: 'bool' },\n { name: 'code', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'direction',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'enum IPolicy.Direction' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'policyType',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'validateConfig',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: 'config', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n { type: 'error', name: 'ConfigNotEmpty', inputs: [] },\n ],\n} as const;\nexport const issuerVaultBytecode =\n '0x60e060405234801561000f575f80fd5b506040516109cc3803806109cc83398101604081905261002e91610066565b6001600160a01b0392831660805260a0919091521660c05261009f565b80516001600160a01b0381168114610061575f80fd5b919050565b5f805f60608486031215610078575f80fd5b6100818461004b565b9250602084015191506100966040850161004b565b90509250925092565b60805160a05160c0516108cc6101005f395f818161014e015281816103b8015261044501525f818160b6015281816102390152818161030b015261048201525f81816101ad015281816102610152818161033801526104af01526108cc5ff3fe608060405234801561000f575f80fd5b5060043610610085575f3560e01c8063bc197c8111610058578063bc197c811461010e578063e9cbd82214610149578063f23a6e6114610188578063fc0c546a146101a8575f80fd5b806301ffc9a71461008957806317d70f7c146100b15780632e1a7d4d146100e6578063b6b55f25146100fb575b5f80fd5b61009c61009736600461068a565b6101cf565b60405190151581526020015b60405180910390f35b6100d87f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100a8565b6100f96100f43660046106b8565b610205565b005b6100f96101093660046106b8565b610418565b61013061011c366004610770565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016100a8565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a8565b610130610196366004610823565b63f23a6e6160e01b9695505050505050565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b03198216630271189760e51b14806101ff57506001600160e01b031982166301ffc9a760e01b145b92915050565b805f0361022557604051631f2a200560e01b815260040160405180910390fd5b604051627eeac760e11b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000602482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062fdd58e90604401602060405180830381865afa1580156102ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d19190610896565b10156102f057604051631e9acf1760e31b815260040160405180910390fd5b60405163018d308d60e41b81523360048201525f60248201527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906318d308d0906084016020604051808303815f875af1158015610386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103aa91906108ad565b506103df6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383610540565b60405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a250565b805f0361043857604051631f2a200560e01b815260040160405180910390fd5b61046d6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461057f565b604051630ab714fb60e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063156e29f6906064015f604051808303815f87803b1580156104f8575f80fd5b505af115801561050a573d5f803e3d5ffd5b50506040518381523392507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200161040d565b61054d83838360016105bb565b61057a57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b505050565b61058d84848484600161061d565b6105b557604051635274afe760e01b81526001600160a01b0385166004820152602401610571565b50505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610611578383151615610605573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661067957838315161561066d573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f6020828403121561069a575f80fd5b81356001600160e01b0319811681146106b1575f80fd5b9392505050565b5f602082840312156106c8575f80fd5b5035919050565b80356001600160a01b03811681146106e5575f80fd5b919050565b5f8083601f8401126106fa575f80fd5b50813567ffffffffffffffff811115610711575f80fd5b6020830191508360208260051b850101111561072b575f80fd5b9250929050565b5f8083601f840112610742575f80fd5b50813567ffffffffffffffff811115610759575f80fd5b60208301915083602082850101111561072b575f80fd5b5f805f805f805f8060a0898b031215610787575f80fd5b610790896106cf565b975061079e60208a016106cf565b9650604089013567ffffffffffffffff808211156107ba575f80fd5b6107c68c838d016106ea565b909850965060608b01359150808211156107de575f80fd5b6107ea8c838d016106ea565b909650945060808b0135915080821115610802575f80fd5b5061080f8b828c01610732565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215610838575f80fd5b610841876106cf565b955061084f602088016106cf565b94506040870135935060608701359250608087013567ffffffffffffffff811115610878575f80fd5b61088489828a01610732565b979a9699509497509295939492505050565b5f602082840312156108a6575f80fd5b5051919050565b5f602082840312156108bd575f80fd5b815180151581146106b1575f80fd' as const;\nexport const issuerSandboxVaultBytecode =\n '0x60e060405234801562000010575f80fd5b5060405162001015380380620010158339810160408190526200003391620002ad565b6001600160a01b03808416608081905260a084905290821660c0523b5f036200006f5760405163c1ab6dc160e01b815260040160405180910390fd5b5f6001600160a01b03166080516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000de9190620002f2565b6001600160a01b031603620001065760405163c1ab6dc160e01b815260040160405180910390fd5b806001600160a01b03163b5f036200013157604051632945604560e11b815260040160405180910390fd5b5f6080516001600160a01b0316637d42151b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000171573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001979190620002f2565b60408051600481526024810182526020810180516001600160e01b0316630b5bc63160e21b17905290519192505f9182916001600160a01b03851691620001df919062000317565b5f60405180830381855afa9150503d805f811462000219576040519150601f19603f3d011682016040523d82523d5f602084013e6200021e565b606091505b509150915081158062000232575060208151105b156200025157604051638280af7360e01b815260040160405180910390fd5b60028180602001905181019062000269919062000345565b10156200028957604051638280af7360e01b815260040160405180910390fd5b5050505050506200035d565b6001600160a01b0381168114620002aa575f80fd5b50565b5f805f60608486031215620002c0575f80fd5b8351620002cd8162000295565b602085015160408601519194509250620002e78162000295565b809150509250925092565b5f6020828403121562000303575f80fd5b8151620003108162000295565b9392505050565b5f82515f5b818110156200033857602081860181015185830152016200031c565b505f920191825250919050565b5f6020828403121562000356575f80fd5b5051919050565b60805160a05160c051610c48620003cd5f395f81816101970152818161040101526104c201525f818160cc015281816102820152818161035401526104ff01525f81816101f6015281816102aa01528181610381015281816104680152818161052c01526106150152610c485ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063bc197c8111610063578063bc197c8114610144578063d45780a81461017f578063e9cbd82214610192578063f23a6e61146101d1578063fc0c546a146101f1575f80fd5b806301ffc9a71461009f57806317d70f7c146100c75780632e1a7d4d146100fc5780639638f10e14610111578063b6b55f2514610131575b5f80fd5b6100b26100ad3660046108ac565b610218565b60405190151581526020015b60405180910390f35b6100ee7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100be565b61010f61010a3660046108d3565b61024e565b005b61012461011f36600461092f565b610461565b6040516100be919061096e565b61010f61013f3660046108d3565b610495565b610166610152366004610a12565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016100be565b61012461018d366004610ac9565b6105bd565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100be565b6101666101df366004610b1a565b63f23a6e6160e01b9695505050505050565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b03198216630271189760e51b148061024857506001600160e01b031982166301ffc9a760e01b145b92915050565b805f0361026e57604051631f2a200560e01b815260040160405180910390fd5b604051627eeac760e11b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000602482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062fdd58e90604401602060405180830381865afa1580156102f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031a9190610b91565b101561033957604051631e9acf1760e31b815260040160405180910390fd5b60405163018d308d60e41b81523360048201525f60248201527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906318d308d0906084016020604051808303815f875af11580156103cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f39190610ba8565b506104286001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633836105d2565b60405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a250565b606061048e7f00000000000000000000000000000000000000000000000000000000000000008484610611565b9392505050565b805f036104b557604051631f2a200560e01b815260040160405180910390fd5b6104ea6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846107a1565b604051630ab714fb60e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063156e29f6906064015f604051808303815f87803b158015610575575f80fd5b505af1158015610587573d5f803e3d5ffd5b50506040518381523392507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c49150602001610456565b60606105ca848484610611565b949350505050565b6105df83838360016107dd565b61060c57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106939190610bc7565b6001600160a01b0316336001600160a01b0316146106c4576040516359dc379f60e01b815260040160405180910390fd5b5f600483106106e8576106da60045f8587610be2565b6106e391610c09565b6106ea565b5f5b90505f856001600160a01b03168585604051610707929190610c39565b5f604051808303815f865af19150503d805f8114610740576040519150601f19603f3d011682016040523d82523d5f602084013e610745565b606091505b50935090508061075757825160208401fd5b6040516001600160e01b03198316906001600160a01b0388169033907fbaa00c065bbee074455940c09a003646f9297af57114f879e9e269625b927434905f90a450509392505050565b6107af84848484600161083f565b6107d757604051635274afe760e01b81526001600160a01b0385166004820152602401610603565b50505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316610833578383151615610827573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661089b57838315161561088f573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f602082840312156108bc575f80fd5b81356001600160e01b03198116811461048e575f80fd5b5f602082840312156108e3575f80fd5b5035919050565b5f8083601f8401126108fa575f80fd5b50813567ffffffffffffffff811115610911575f80fd5b602083019150836020828501011115610928575f80fd5b9250929050565b5f8060208385031215610940575f80fd5b823567ffffffffffffffff811115610956575f80fd5b610962858286016108ea565b90969095509350505050565b5f602080835283518060208501525f5b8181101561099a5785810183015185820160400152820161097e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109ce575f80fd5b50565b5f8083601f8401126109e1575f80fd5b50813567ffffffffffffffff8111156109f8575f80fd5b6020830191508360208260051b8501011115610928575f80fd5b5f805f805f805f8060a0898b031215610a29575f80fd5b8835610a34816109ba565b97506020890135610a44816109ba565b9650604089013567ffffffffffffffff80821115610a60575f80fd5b610a6c8c838d016109d1565b909850965060608b0135915080821115610a84575f80fd5b610a908c838d016109d1565b909650945060808b0135915080821115610aa8575f80fd5b50610ab58b828c016108ea565b999c989b5096995094979396929594505050565b5f805f60408486031215610adb575f80fd5b8335610ae6816109ba565b9250602084013567ffffffffffffffff811115610b01575f80fd5b610b0d868287016108ea565b9497909650939450505050565b5f805f805f8060a08789031215610b2f575f80fd5b8635610b3a816109ba565b95506020870135610b4a816109ba565b94506040870135935060608701359250608087013567ffffffffffffffff811115610b73575f80fd5b610b7f89828a016108ea565b979a9699509497509295939492505050565b5f60208284031215610ba1575f80fd5b5051919050565b5f60208284031215610bb8575f80fd5b8151801515811461048e575f80fd5b5f60208284031215610bd7575f80fd5b815161048e816109ba565b5f8085851115610bf0575f80fd5b83861115610bfc575f80fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015610c315780818660040360031b1b83161692505b505092915050565b818382375f910190815291905056' as const;\nexport const issuerAdapterBytecode =\n '0x60c060405234801562000010575f80fd5b5060405162000bf338038062000bf3833981016040819052620000339162000157565b818160036200004383826200026f565b5060046200005282826200026f565b5050506001600160a01b0384166200007d5760405163c1ab6dc160e01b815260040160405180910390fd5b50506001600160a01b0390911660805260a0526200033b565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620000ba575f80fd5b81516001600160401b0380821115620000d757620000d762000096565b604051601f8301601f19908116603f0116810190828211818310171562000102576200010262000096565b81604052838152602092508660208588010111156200011f575f80fd5b5f91505b8382101562000142578582018301518183018401529082019062000123565b5f602085830101528094505050505092915050565b5f805f80608085870312156200016b575f80fd5b84516001600160a01b038116811462000182575f80fd5b6020860151604087015191955093506001600160401b0380821115620001a6575f80fd5b620001b488838901620000aa565b93506060870151915080821115620001ca575f80fd5b50620001d987828801620000aa565b91505092959194509250565b600181811c90821680620001fa57607f821691505b6020821081036200021957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200026a57805f5260205f20601f840160051c81016020851015620002465750805b601f840160051c820191505b8181101562000267575f815560010162000252565b50505b505050565b81516001600160401b038111156200028b576200028b62000096565b620002a3816200029c8454620001e5565b846200021f565b602080601f831160018114620002d9575f8415620002c15750858301515b5f19600386901b1c1916600185901b17855562000333565b5f85815260208120601f198616915b828110156200030957888601518255948401946001909101908401620002e8565b50858210156200032757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805160a05161086c620003875f395f8181610156015281816102a501528181610384015261062101525f81816101b5015281816102cd015281816103ac015261065b015261086c5ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c806370a082311161006e57806370a082311461012357806395d89b4114610136578063a9059cbb1461013e578063af640d0f14610151578063dd62ed3e14610178578063fc0c546a146101b0575f80fd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd14610101578063313ce56714610114575b5f80fd5b6100b26101ef565b6040516100bf9190610704565b60405180910390f35b6100db6100d636600461076b565b61027f565b60405190151581526020016100bf565b6100f3610296565b6040519081526020016100bf565b6100db61010f366004610793565b610343565b604051601281526020016100bf565b6100f36101313660046107cc565b610366565b6100b261041c565b6100db61014c36600461076b565b61042b565b6100f37f000000000000000000000000000000000000000000000000000000000000000081565b6100f36101863660046107ec565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101d77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100bf565b6060600380546101fe9061081d565b80601f016020809104026020016040519081016040528092919081815260200182805461022a9061081d565b80156102755780601f1061024c57610100808354040283529160200191610275565b820191905f5260205f20905b81548152906001019060200180831161025857829003601f168201915b5050505050905090565b5f3361028c818585610438565b5060019392505050565b60405163bd85b03960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990602401602060405180830381865afa15801561031a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033e9190610855565b905090565b5f3361035085828561044a565b61035b8585856104cb565b506001949350505050565b604051627eeac760e11b81526001600160a01b0382811660048301527f000000000000000000000000000000000000000000000000000000000000000060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169062fdd58e90604401602060405180830381865afa1580156103f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104169190610855565b92915050565b6060600480546101fe9061081d565b5f3361028c8185856104cb565b6104458383836001610528565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198110156104c557818110156104b757604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b6104c584848484035f610528565b50505050565b6001600160a01b0383166104f457604051634b637e8f60e11b81525f60048201526024016104ae565b6001600160a01b03821661051d5760405163ec442f0560e01b81525f60048201526024016104ae565b6104458383836105fa565b6001600160a01b0384166105515760405163e602df0560e01b81525f60048201526024016104ae565b6001600160a01b03831661057a57604051634a1406b160e11b81525f60048201526024016104ae565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156104c557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105ec91815260200190565b60405180910390a350505050565b604051637921219560e11b81526001600160a01b03848116600483015283811660248301527f000000000000000000000000000000000000000000000000000000000000000060448301526064820183905260a060848301525f60a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c4015f604051808303815f87803b15801561069c575f80fd5b505af11580156106ae573d5f803e3d5ffd5b50505050816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106f791815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561073057858101830151858201604001528201610714565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610766575f80fd5b919050565b5f806040838503121561077c575f80fd5b61078583610750565b946020939093013593505050565b5f805f606084860312156107a5575f80fd5b6107ae84610750565b92506107bc60208501610750565b9150604084013590509250925092565b5f602082840312156107dc575f80fd5b6107e582610750565b9392505050565b5f80604083850312156107fd575f80fd5b61080683610750565b915061081460208401610750565b90509250929050565b600181811c9082168061083157607f821691505b60208210810361084f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610865575f80fd5b505191905056' as const;\nexport const issuerTokenTraitRegistryBytecode =\n '0x608060405234801561000f575f80fd5b5061043f8061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80632fc74dbb1461004e5780638b3c4278146100765780638c32d3381461008b578063cfdbf2541461009e575b5f80fd5b61006161005c366004610323565b6100b4565b60405190151581526020015b60405180910390f35b610089610084366004610374565b6100f6565b005b6100896100993660046103a6565b61019c565b6100a660c881565b60405190815260200161006d565b5f816100c157505f6100ef565b506001600160a01b0383165f90815260208181526040808320858452825280832084845290915290205460ff165b9392505050565b826101145760405163044145c360e01b815260040160405180910390fd5b816101325760405163661b748960e11b815260040160405180910390fd5b335f818152602081815260408083208784528252808320868452825291829020805460ff191685151590811790915591519182528492869290917fc977b75d21028fb25af9d6050381909d041e2333faf53c683ffec798061e8580910160405180910390a4505050565b825f8190036101be5760405163c2e5347d60e01b815260040160405180910390fd5b60c88111156101ee5760405163bb1cb70b60e01b81526004810182905260c8602482015260440160405180910390fd5b8261020c5760405163661b748960e11b815260040160405180910390fd5b335f5b8281101561031a575f87878381811061022a5761022a61042b565b905060200201350361024f5760405163044145c360e01b815260040160405180910390fd5b6001600160a01b0382165f908152602081905260408120859189898581811061027a5761027a61042b565b9050602002013581526020019081526020015f205f8781526020019081526020015f205f6101000a81548160ff021916908315150217905550848787838181106102c6576102c661042b565b90506020020135836001600160a01b03167fc977b75d21028fb25af9d6050381909d041e2333faf53c683ffec798061e85808760405161030a911515815260200190565b60405180910390a460010161020f565b50505050505050565b5f805f60608486031215610335575f80fd5b83356001600160a01b038116811461034b575f80fd5b95602085013595506040909401359392505050565b8035801515811461036f575f80fd5b919050565b5f805f60608486031215610386575f80fd5b833592506020840135915061039d60408501610360565b90509250925092565b5f805f80606085870312156103b9575f80fd5b843567ffffffffffffffff808211156103d0575f80fd5b818701915087601f8301126103e3575f80fd5b8135818111156103f1575f80fd5b8860208260051b8501011115610405575f80fd5b60209283019650945050850135915061042060408601610360565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd' as const;\n","import {\n BaseError,\n ContractFunctionRevertedError,\n decodeEventLog,\n defineChain,\n encodeFunctionData,\n getAddress,\n isAddress,\n maxUint256,\n zeroAddress,\n} from 'viem';\nimport type { Address, PublicClient, Transaction, WalletClient } from 'viem';\nimport { OpacityIssuerError } from '../errors.js';\nimport { issuerPolicyEngineAbi, issuerTokenAbi } from '../issuers/abi.js';\nimport type {\n PreparedTransfer,\n SubmittedTransfer,\n TransferBlocker,\n TransferClientOptions,\n TransferDeployment,\n TransferGasEstimate,\n TransferParams,\n TransferReceiptResult,\n TransferRejection,\n TransferTransaction,\n TransferWaitOptions,\n TransferWriteRequest,\n} from './types.js';\n\nexport * from './types.js';\n\n// A policy-engine error bubbles through SecurityToken. Include its error ABI for viem decoding.\nconst simulationAbi = [\n ...issuerTokenAbi,\n ...issuerPolicyEngineAbi.filter((item) => item.type === 'error'),\n] as const;\n\n// Shared across namespace instances and tokens: simultaneous sends by one holder race nonces.\nconst sendsInProgress = new Set<string>();\n\nexport class OpacityTransferError extends OpacityIssuerError {\n readonly prepared: PreparedTransfer | undefined;\n\n constructor(\n readonly code:\n | 'invalid-input'\n | 'missing-client'\n | 'chain-mismatch'\n | 'account-mismatch'\n | 'deployment-mismatch'\n | 'transfer-blocked'\n | 'send-in-progress',\n message: string,\n options?: { cause?: unknown; prepared?: PreparedTransfer },\n ) {\n super(message, options);\n this.name = 'OpacityTransferError';\n this.prepared = options?.prepared;\n }\n}\n\nfunction address(value: Address, field: string): Address {\n if (typeof value !== 'string' || !isAddress(value, { strict: false }) || value === zeroAddress) {\n throw new OpacityTransferError('invalid-input', `${field} must be a nonzero address.`);\n }\n return getAddress(value);\n}\n\nfunction chainId(value: number): number {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new OpacityTransferError('invalid-input', 'chainId must be a positive safe integer.');\n }\n return value;\n}\n\nfunction uint256(value: bigint, field: string, positive = false): bigint {\n if (typeof value !== 'bigint' || value < (positive ? 1n : 0n) || value > maxUint256) {\n throw new OpacityTransferError(\n 'invalid-input',\n `${field} must be a ${positive ? 'positive ' : ''}uint256 bigint.`,\n );\n }\n return value;\n}\n\nfunction transferParams(input: TransferParams): TransferParams {\n if (!input || !input.deployment) {\n throw new OpacityTransferError(\n 'invalid-input',\n 'Transfer parameters and deployment are required.',\n );\n }\n const deployment = input.deployment;\n return Object.freeze({\n deployment: Object.freeze({\n chainId: chainId(deployment.chainId),\n token: address(deployment.token, 'token'),\n tokenId: uint256(deployment.tokenId, 'tokenId'),\n ...(deployment.allowlistRegistry === undefined\n ? {}\n : { allowlistRegistry: address(deployment.allowlistRegistry, 'allowlistRegistry') }),\n }),\n sender: address(input.sender, 'sender'),\n recipient: address(input.recipient, 'recipient'),\n amount: uint256(input.amount, 'amount', true),\n });\n}\n\nfunction sameAddress(a: Address | null | undefined, b: Address): boolean {\n return typeof a === 'string' && a.toLowerCase() === b.toLowerCase();\n}\n\n/** Strict raw-unit conversion; never rounds or accepts floating-point JS numbers. */\nexport function parseTransferAmount(value: string, decimals: number): bigint {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255) {\n throw new OpacityTransferError('invalid-input', 'decimals must be an integer from 0 to 255.');\n }\n if (typeof value !== 'string' || !/^\\d+(?:\\.\\d+)?$/.test(value)) {\n throw new OpacityTransferError(\n 'invalid-input',\n 'amount must be a plain positive decimal string.',\n );\n }\n const [whole = '', fraction = ''] = value.split('.');\n if (fraction.length > decimals) {\n throw new OpacityTransferError(\n 'invalid-input',\n `amount has more than ${decimals} decimal places.`,\n );\n }\n const digits = `${whole}${fraction.padEnd(decimals, '0')}`.replace(/^0+/, '');\n if (digits.length > 78)\n throw new OpacityTransferError('invalid-input', 'amount exceeds uint256.');\n return uint256(BigInt(digits || '0'), 'amount', true);\n}\n\n/** Pure holder transfer builder. Live policy, balance and gas checks belong to prepareTransfer. */\nexport function buildTransferWriteRequest(input: TransferParams): TransferWriteRequest {\n const params = transferParams(input);\n return Object.freeze({\n address: params.deployment.token,\n abi: issuerTokenAbi,\n functionName: 'safeTransferFrom',\n args: Object.freeze([\n params.sender,\n params.recipient,\n params.deployment.tokenId,\n params.amount,\n '0x',\n ] as const),\n account: params.sender,\n chainId: params.deployment.chainId,\n });\n}\n\nexport function buildTransferTransaction(input: TransferParams): TransferTransaction {\n const request = buildTransferWriteRequest(input);\n return Object.freeze({\n to: request.address,\n from: request.account,\n data: encodeFunctionData(request),\n value: 0n,\n chainId: request.chainId,\n });\n}\n\nfunction contractRejection(cause: unknown): TransferRejection | undefined {\n const error =\n cause instanceof BaseError\n ? cause.walk((nested) => nested instanceof ContractFunctionRevertedError)\n : undefined;\n if (!(error instanceof ContractFunctionRevertedError)) return undefined;\n return Object.freeze({\n ...(error.data?.errorName === undefined ? {} : { errorName: error.data.errorName }),\n ...(error.data?.args === undefined ? {} : { args: Object.freeze([...error.data.args]) }),\n ...(error.reason === undefined ? {} : { reason: error.reason }),\n ...(error.raw === undefined ? {} : { data: error.raw }),\n });\n}\n\n/**\n * Normal ERC1155 holder transfers, with live contract policy as the authority.\n * sendTransfer makes exactly one sender-funded transaction, with no approvals or retry loop.\n */\nexport function createTransfersNamespace(options: TransferClientOptions = {}) {\n const configuredChain = options.chainId === undefined ? undefined : chainId(options.chainId);\n const publicClient = options.publicClient;\n const walletClient = options.walletClient;\n\n async function clientFor(deployment: TransferDeployment): Promise<PublicClient> {\n if (!publicClient)\n throw new OpacityTransferError('missing-client', 'A publicClient is required for transfers.');\n if (\n (configuredChain !== undefined && configuredChain !== deployment.chainId) ||\n (publicClient.chain !== undefined && publicClient.chain.id !== deployment.chainId) ||\n (await publicClient.getChainId()) !== deployment.chainId\n ) {\n throw new OpacityTransferError(\n 'chain-mismatch',\n 'Public RPC/configured chain differs from the transfer deployment.',\n );\n }\n return publicClient;\n }\n\n async function walletFor(params: TransferParams): Promise<WalletClient> {\n if (!walletClient)\n throw new OpacityTransferError(\n 'missing-client',\n 'A walletClient is required to send a transfer.',\n );\n if (\n (await walletClient.getChainId()) !== params.deployment.chainId ||\n (walletClient.chain !== undefined && walletClient.chain.id !== params.deployment.chainId)\n ) {\n throw new OpacityTransferError(\n 'chain-mismatch',\n 'Wallet chain differs from the transfer deployment.',\n );\n }\n const selected =\n walletClient.account?.type === 'local'\n ? walletClient.account.address\n : (await walletClient.getAddresses())[0];\n if (\n !selected ||\n !sameAddress(selected, params.sender) ||\n (walletClient.account !== undefined &&\n !sameAddress(walletClient.account.address, params.sender))\n ) {\n throw new OpacityTransferError(\n 'account-mismatch',\n 'The selected wallet differs from the pinned transfer sender.',\n );\n }\n return walletClient;\n }\n\n async function prepareTransfer(input: TransferParams): Promise<PreparedTransfer> {\n const params = transferParams(input);\n const client = await clientFor(params.deployment);\n const block = await client.getBlock({ blockTag: 'latest' });\n const blockNumber = block.number;\n const tokenCode = await client.getBytecode({ address: params.deployment.token, blockNumber });\n if (!tokenCode || tokenCode === '0x') {\n throw new OpacityTransferError('deployment-mismatch', 'SecurityToken code is missing.');\n }\n const read = { address: params.deployment.token, abi: issuerTokenAbi, blockNumber } as const;\n const [registry, senderBalance, recipientBalance, nativeBalance] = await Promise.all([\n client.readContract({ ...read, functionName: 'allowlistRegistry' }),\n client.readContract({\n ...read,\n functionName: 'balanceOf',\n args: [params.sender, params.deployment.tokenId],\n }),\n client.readContract({\n ...read,\n functionName: 'balanceOf',\n args: [params.recipient, params.deployment.tokenId],\n }),\n client.getBalance({ address: params.sender, blockNumber }),\n ]);\n if (!isAddress(registry, { strict: false }) || registry === zeroAddress) {\n throw new OpacityTransferError(\n 'deployment-mismatch',\n 'SecurityToken live registry is missing.',\n );\n }\n const allowlistRegistry = getAddress(registry);\n if (\n params.deployment.allowlistRegistry !== undefined &&\n !sameAddress(allowlistRegistry, params.deployment.allowlistRegistry)\n ) {\n throw new OpacityTransferError(\n 'deployment-mismatch',\n 'Token registry does not match the transfer deployment.',\n );\n }\n const registryCode = await client.getBytecode({ address: allowlistRegistry, blockNumber });\n if (!registryCode || registryCode === '0x') {\n throw new OpacityTransferError(\n 'deployment-mismatch',\n 'The live allowlist registry has no code.',\n );\n }\n const request = buildTransferWriteRequest(params);\n const transaction = buildTransferTransaction(params);\n const blockers: TransferBlocker[] = [];\n if (senderBalance < params.amount) blockers.push('insufficient-token-balance');\n let rejection: TransferRejection | undefined;\n let estimatedGas: bigint | undefined;\n try {\n // Zero gas price lets an unfunded holder test policy without replacing account state.\n await client.simulateContract({ ...request, abi: simulationAbi, blockNumber, gasPrice: 0n });\n estimatedGas = await client.estimateContractGas({\n ...request,\n abi: simulationAbi,\n blockNumber,\n gasPrice: 0n,\n });\n } catch (cause) {\n rejection = contractRejection(cause);\n if (!rejection) throw cause;\n blockers.push('contract-rejected');\n }\n let gas: TransferGasEstimate | undefined;\n if (estimatedGas !== undefined) {\n uint256(estimatedGas, 'estimatedGas', true);\n const gasLimit = (estimatedGas * 120n + 99n) / 100n;\n uint256(gasLimit, 'gas', true);\n if (block.baseFeePerGas !== null && block.baseFeePerGas !== undefined) {\n const fees = await client.estimateFeesPerGas({\n type: 'eip1559',\n chain: client.chain ?? null,\n });\n const maxFeePerGas = uint256(fees.maxFeePerGas, 'maxFeePerGas');\n const maxPriorityFeePerGas = uint256(fees.maxPriorityFeePerGas, 'maxPriorityFeePerGas');\n if (maxPriorityFeePerGas > maxFeePerGas)\n throw new OpacityTransferError('invalid-input', 'Priority fee exceeds the maximum fee.');\n const maxCost = uint256(gasLimit * maxFeePerGas, 'maxCost');\n gas = Object.freeze({\n estimatedGas,\n gas: gasLimit,\n maxFeePerGas,\n maxPriorityFeePerGas,\n maxCost,\n shortfall: maxCost > nativeBalance ? maxCost - nativeBalance : 0n,\n });\n } else {\n const fees = await client.estimateFeesPerGas({\n type: 'legacy',\n chain: client.chain ?? null,\n });\n const gasPrice = uint256(fees.gasPrice, 'gasPrice');\n const maxCost = uint256(gasLimit * gasPrice, 'maxCost');\n gas = Object.freeze({\n estimatedGas,\n gas: gasLimit,\n gasPrice,\n maxCost,\n shortfall: maxCost > nativeBalance ? maxCost - nativeBalance : 0n,\n });\n }\n if (gas.shortfall > 0n) blockers.push('insufficient-gas');\n }\n await clientFor(params.deployment);\n return Object.freeze({\n ...params,\n blockNumber,\n blockTimestamp: block.timestamp,\n allowlistRegistry,\n senderBalance,\n recipientBalance,\n nativeBalance,\n blockers: Object.freeze(blockers),\n ...(rejection === undefined ? {} : { rejection }),\n ...(gas === undefined ? {} : { gas }),\n ready: blockers.length === 0,\n request,\n transaction,\n });\n }\n\n async function sendTransfer(input: TransferParams): Promise<SubmittedTransfer> {\n const params = transferParams(input);\n const key = `${params.deployment.chainId}:${params.sender.toLowerCase()}`;\n if (sendsInProgress.has(key))\n throw new OpacityTransferError(\n 'send-in-progress',\n 'A transfer request for this sender is already in progress.',\n );\n sendsInProgress.add(key);\n try {\n await walletFor(params);\n const prepared = await prepareTransfer(params);\n if (!prepared.ready || !prepared.gas) {\n throw new OpacityTransferError(\n 'transfer-blocked',\n `Transfer prerequisites failed: ${prepared.blockers.join(', ')}.`,\n { prepared },\n );\n }\n await clientFor(params.deployment);\n const wallet = await walletFor(params);\n const chain =\n wallet.chain ??\n defineChain({\n id: params.deployment.chainId,\n name: `Transfer chain ${params.deployment.chainId}`,\n nativeCurrency: { name: 'Native currency', symbol: 'NATIVE', decimals: 18 },\n rpcUrls: { default: { http: [] } },\n });\n const { gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas } = prepared.gas;\n const hash = await wallet.writeContract({\n ...prepared.request,\n account: wallet.account ?? params.sender,\n chain,\n gas,\n ...(gasPrice === undefined ? { maxFeePerGas, maxPriorityFeePerGas } : { gasPrice }),\n });\n return Object.freeze({ ...params, kind: 'transfer', hash });\n } finally {\n sendsInProgress.delete(key);\n }\n }\n\n async function waitForTransfer(\n submitted: SubmittedTransfer,\n wait: TransferWaitOptions = {},\n ): Promise<TransferReceiptResult> {\n if (submitted?.kind !== 'transfer')\n throw new OpacityTransferError('invalid-input', 'Expected a submitted transfer record.');\n const params = transferParams(submitted);\n const hash = submitted.hash;\n if (typeof hash !== 'string' || !/^0x[\\da-fA-F]{64}$/.test(hash) || /^0x0+$/.test(hash)) {\n throw new OpacityTransferError('invalid-input', 'hash must be nonzero bytes32.');\n }\n const waitOptions = {\n confirmations: wait.confirmations,\n timeout: wait.timeout,\n pollingInterval: wait.pollingInterval,\n };\n for (const [field, value] of Object.entries(waitOptions)) {\n if (value !== undefined && (!Number.isSafeInteger(value) || value <= 0)) {\n throw new OpacityTransferError(\n 'invalid-input',\n `${field} must be a positive safe integer.`,\n );\n }\n }\n const client = await clientFor(params.deployment);\n let replacementReason: TransferReceiptResult['replacementReason'];\n const received = await client.waitForTransactionReceipt({\n hash,\n ...waitOptions,\n onReplaced: (replacement) => {\n replacementReason = replacement.reason;\n },\n });\n // Detach evidence before later RPC awaits; clients may reuse/mutate their response objects.\n const receipt = {\n ...received,\n logs: received.logs.map((log) => ({ ...log, topics: [...log.topics] as typeof log.topics })),\n };\n await clientFor(params.deployment);\n const result: TransferReceiptResult = {\n status:\n receipt.transactionHash.toLowerCase() !== hash.toLowerCase() ||\n replacementReason !== undefined\n ? 'replaced'\n : receipt.status === 'reverted'\n ? 'reverted'\n : 'unverified',\n submittedHash: hash,\n hash: receipt.transactionHash,\n receipt,\n ...(replacementReason === undefined ? {} : { replacementReason }),\n };\n if (result.status !== 'unverified' || receipt.status !== 'success') return result;\n if (\n !sameAddress(receipt.from, params.sender) ||\n !sameAddress(receipt.to, params.deployment.token)\n )\n return result;\n let transaction: Transaction;\n try {\n transaction = { ...(await client.getTransaction({ hash })) };\n } catch {\n return result;\n }\n await clientFor(params.deployment);\n if (\n transaction.chainId !== params.deployment.chainId ||\n typeof transaction.hash !== 'string' ||\n transaction.hash.toLowerCase() !== hash.toLowerCase() ||\n !sameAddress(transaction.from, params.sender) ||\n !sameAddress(transaction.to, params.deployment.token) ||\n transaction.value !== 0n ||\n typeof transaction.input !== 'string' ||\n transaction.input.toLowerCase() !== buildTransferTransaction(params).data.toLowerCase()\n )\n return result;\n for (const log of receipt.logs) {\n if (\n !sameAddress(log.address, params.deployment.token) ||\n log.removed ||\n log.transactionHash?.toLowerCase() !== hash.toLowerCase()\n )\n continue;\n try {\n const event = decodeEventLog({\n abi: issuerTokenAbi,\n eventName: 'TransferSingle',\n data: log.data,\n topics: log.topics,\n strict: true,\n });\n if (\n sameAddress(event.args.operator, params.sender) &&\n sameAddress(event.args.from, params.sender) &&\n sameAddress(event.args.to, params.recipient) &&\n event.args.id === params.deployment.tokenId &&\n event.args.value === params.amount\n )\n return { ...result, status: 'confirmed' };\n } catch {\n // Other or malformed logs are not evidence of this transfer.\n }\n }\n return result;\n }\n\n return { prepareTransfer, sendTransfer, waitForTransfer };\n}\n\nexport type OpacityTransfersNamespace = ReturnType<typeof createTransfersNamespace>;\n","import { getAddress, isAddress, maxUint256, zeroAddress, zeroHash } from 'viem';\nimport type { Address, Hex } from 'viem';\nimport { OpacityIssuerError } from '../errors.js';\nimport type {\n IssuerDeployTokenParams,\n IssuerProtocolDeployment,\n IssuerTransaction,\n} from './types.js';\n\nexport class OpacityIssuerOperationError extends OpacityIssuerError {\n constructor(\n readonly code:\n | 'invalid-input'\n | 'missing-client'\n | 'chain-mismatch'\n | 'account-mismatch'\n | 'deployment-mismatch'\n | 'deployment-blocked'\n | 'simulation-failed'\n | 'send-in-progress',\n message: string,\n options?: { cause?: unknown },\n ) {\n super(message, options);\n this.name = 'OpacityIssuerOperationError';\n }\n}\nexport function invalid(message: string): never {\n throw new OpacityIssuerOperationError('invalid-input', message);\n}\nexport function issuerAddress(value: Address, name: string, allowZero = false): Address {\n if (\n typeof value !== 'string' ||\n !isAddress(value, { strict: false }) ||\n (!allowZero && value.toLowerCase() === zeroAddress)\n )\n invalid(`${name} must be a ${allowZero ? '' : 'nonzero '}address.`);\n return getAddress(value);\n}\nexport function issuerChainId(value: number): number {\n if (!Number.isSafeInteger(value) || value <= 0)\n invalid('chainId must be a positive safe integer.');\n return value;\n}\nexport function issuerUint(value: bigint, name: string): bigint {\n if (typeof value !== 'bigint' || value < 0n || value > maxUint256)\n invalid(`${name} must be a uint256 bigint.`);\n return value;\n}\nexport function issuerBytes(value: Hex, name: string, size?: number): Hex {\n if (\n typeof value !== 'string' ||\n !/^0x(?:[0-9a-fA-F]{2})*$/.test(value) ||\n (size !== undefined && value.length !== 2 + size * 2)\n )\n invalid(`${name} must be ${size === undefined ? 'hex bytes' : `bytes${size}`}.`);\n return value;\n}\nexport function sameIssuerAddress(a: string, b: string): boolean {\n return a.toLowerCase() === b.toLowerCase();\n}\nexport function issuerDeployment(input: IssuerProtocolDeployment): IssuerProtocolDeployment {\n const deployment = {\n ...input,\n chainId: issuerChainId(input.chainId),\n factory: issuerAddress(input.factory, 'factory'),\n allowlistRegistry: issuerAddress(input.allowlistRegistry, 'allowlistRegistry'),\n beaconRegistry: issuerAddress(input.beaconRegistry, 'beaconRegistry'),\n };\n for (const key of [\n 'policyEngine',\n 'policyRegistry',\n 'tokenTraitRegistry',\n 'overrideHelper',\n 'ruleSetOrchestrator',\n ] as const) {\n const value = input[key];\n if (value !== undefined) deployment[key] = issuerAddress(value, key);\n }\n return Object.freeze(deployment);\n}\nexport function issuerDeployParams(input: IssuerDeployTokenParams): IssuerDeployTokenParams {\n const deployment = issuerDeployment(input.deployment);\n const issuer = issuerAddress(input.issuer, 'issuer');\n const config = {\n ...input.config,\n beaconVariant: issuerBytes(input.config.beaconVariant, 'beaconVariant', 32),\n };\n for (const key of ['name', 'symbol', 'uri'] as const)\n if (typeof config[key] !== 'string') invalid(`${key} must be a string.`);\n if (!config.name.trim() || !config.symbol.trim())\n invalid('Token name and symbol must not be blank.');\n if (typeof config.pausedOnDeploy !== 'boolean') invalid('pausedOnDeploy must be boolean.');\n const engine = { ...input.engine };\n for (const key of [\n 'policyEngine',\n 'tokenTraitRegistry',\n 'issuerAdmin',\n 'overrideHelper',\n ] as const)\n engine[key] = issuerAddress(input.engine[key], key, true);\n for (const key of ['policyEngine', 'tokenTraitRegistry', 'overrideHelper'] as const) {\n const trusted = deployment[key];\n if (\n trusted !== undefined &&\n engine[key] !== zeroAddress &&\n !sameIssuerAddress(trusted, engine[key])\n )\n invalid(`${key} differs from the pinned protocol deployment.`);\n }\n const seen = new Set<string>();\n engine.policies = input.engine.policies.map((entry) => {\n const p = {\n ...entry,\n impl: issuerAddress(entry.impl, 'policy.impl'),\n scopeKey: issuerBytes(entry.scopeKey, 'policy.scopeKey', 32),\n guardTrait: issuerBytes(entry.guardTrait, 'policy.guardTrait', 32),\n config: issuerBytes(entry.config, 'policy.config'),\n };\n if (!Number.isInteger(p.guardMode) || p.guardMode < 0 || p.guardMode > 3)\n invalid('guardMode must be 0–3.');\n if (typeof p.guardTraitIsGlobal !== 'boolean') invalid('guardTraitIsGlobal must be boolean.');\n if (\n p.guardMode !== 0 &&\n p.guardTrait !== zeroHash &&\n !p.guardTraitIsGlobal &&\n engine.tokenTraitRegistry === zeroAddress\n )\n invalid('A token-scoped guard requires tokenTraitRegistry.');\n const key = `${p.impl.toLowerCase()}:${p.scopeKey.toLowerCase()}`;\n if (seen.has(key)) invalid('Duplicate policy (impl, scopeKey) attachment.');\n seen.add(key);\n return Object.freeze(p);\n });\n if (engine.policies.length && engine.policyEngine === zeroAddress)\n invalid('Initial policies require a policyEngine.');\n if (input.expectedNonce !== undefined) issuerUint(input.expectedNonce, 'expectedNonce');\n return Object.freeze({\n deployment,\n issuer,\n config: Object.freeze(config),\n engine: Object.freeze({ ...engine, policies: Object.freeze(engine.policies) }),\n ...(input.expectedNonce === undefined ? {} : { expectedNonce: input.expectedNonce }),\n });\n}\nexport function issuerTransaction(input: IssuerTransaction): IssuerTransaction {\n if (input.value !== 0n) invalid('Issuer contract calls must have zero native value.');\n return Object.freeze({\n ...(input.to === undefined ? {} : { to: issuerAddress(input.to, 'to') }),\n from: issuerAddress(input.from, 'from'),\n chainId: issuerChainId(input.chainId),\n data: issuerBytes(input.data, 'data'),\n value: 0n,\n });\n}\n","import { encodeDeployData, encodeFunctionData, zeroAddress, zeroHash } from 'viem';\nimport type { Address } from 'viem';\nimport {\n issuerAdapterAbi,\n issuerAdapterBytecode,\n issuerFactoryAbi,\n issuerTokenTraitRegistryAbi,\n issuerTokenTraitRegistryBytecode,\n issuerVaultAbi,\n issuerVaultBytecode,\n issuerSandboxVaultAbi,\n issuerSandboxVaultBytecode,\n} from './abi.js';\nimport type { IssuerDeployTokenParams, IssuerEngineConfig, IssuerTransaction } from './types.js';\nimport { issuerAddress, issuerChainId, issuerDeployParams, issuerUint } from './validation.js';\n\n/** Explicit opt-in to an engine-free token; base registry compliance still applies. */\nexport const EMPTY_ISSUER_ENGINE: IssuerEngineConfig = Object.freeze({\n policyEngine: zeroAddress,\n tokenTraitRegistry: zeroAddress,\n issuerAdmin: zeroAddress,\n overrideHelper: zeroAddress,\n policies: Object.freeze([]),\n});\nexport const DEFAULT_ISSUER_BEACON_VARIANT = zeroHash;\n\n/** Pure calldata builder. Neither authorization nor deployed protocol identity is implied. */\nexport function buildIssuerDeployTokenTransaction(\n input: IssuerDeployTokenParams,\n): IssuerTransaction {\n const params = issuerDeployParams(input);\n return {\n to: params.deployment.factory,\n from: params.issuer,\n chainId: params.deployment.chainId,\n value: 0n,\n data: encodeFunctionData({\n abi: issuerFactoryAbi,\n functionName: 'deployToken',\n args: [params.config, params.engine],\n }),\n };\n}\nexport interface IssuerAuxiliaryDeploymentParams {\n chainId: number;\n from: Address;\n}\nexport interface IssuerVaultDeploymentParams extends IssuerAuxiliaryDeploymentParams {\n token: Address;\n tokenId: bigint;\n paymentToken: Address;\n}\n/** PR156 vault has immutable raw-unit 1:1 economics and no treasury extraction or price setter. */\nexport function buildIssuerVaultDeployment(input: IssuerVaultDeploymentParams): IssuerTransaction {\n return {\n from: issuerAddress(input.from, 'from'),\n chainId: issuerChainId(input.chainId),\n value: 0n,\n data: encodeDeployData({\n abi: issuerVaultAbi,\n bytecode: issuerVaultBytecode,\n args: [\n issuerAddress(input.token, 'token'),\n issuerUint(input.tokenId, 'tokenId'),\n issuerAddress(input.paymentToken, 'paymentToken'),\n ],\n }),\n };\n}\n\n/** Sandbox v3 owner-forwarding vault. Registry must expose sandboxVersion >= 2; economics remain 1:1 raw units. */\nexport function buildIssuerSandboxVaultDeployment(\n input: IssuerVaultDeploymentParams,\n): IssuerTransaction {\n return {\n from: issuerAddress(input.from, 'from'),\n chainId: issuerChainId(input.chainId),\n value: 0n,\n data: encodeDeployData({\n abi: issuerSandboxVaultAbi,\n bytecode: issuerSandboxVaultBytecode,\n args: [\n issuerAddress(input.token, 'token'),\n issuerUint(input.tokenId, 'tokenId'),\n issuerAddress(input.paymentToken, 'paymentToken'),\n ],\n }),\n };\n}\nexport interface IssuerAdapterDeploymentParams extends IssuerAuxiliaryDeploymentParams {\n token: Address;\n tokenId: bigint;\n name: string;\n symbol: string;\n}\n/** ERC20 facade; fixed 18 display decimals. Holders approve it, or owner assigns venue-specific consent. */\nexport function buildIssuerAdapterDeployment(\n input: IssuerAdapterDeploymentParams,\n): IssuerTransaction {\n return {\n from: issuerAddress(input.from, 'from'),\n chainId: issuerChainId(input.chainId),\n value: 0n,\n data: encodeDeployData({\n abi: issuerAdapterAbi,\n bytecode: issuerAdapterBytecode,\n args: [\n issuerAddress(input.token, 'token'),\n issuerUint(input.tokenId, 'tokenId'),\n input.name,\n input.symbol,\n ],\n }),\n };\n}\n/** A plain, permissionless registry deployment. Assign it to the token before setting traits. */\nexport function buildIssuerTokenTraitRegistryDeployment(\n input: IssuerAuxiliaryDeploymentParams,\n): IssuerTransaction {\n return {\n from: issuerAddress(input.from, 'from'),\n chainId: issuerChainId(input.chainId),\n value: 0n,\n data: encodeDeployData({\n abi: issuerTokenTraitRegistryAbi,\n bytecode: issuerTokenTraitRegistryBytecode,\n }),\n };\n}\n","import { encodeFunctionData, getAddress, isAddress, maxUint256, zeroAddress, zeroHash } from 'viem';\nimport type { Abi, Address, ContractFunctionArgs, ContractFunctionName, Hex } from 'viem';\nimport {\n issuerTokenAbi,\n issuerPolicyEngineAbi,\n issuerRuleSetOrchestratorAbi,\n issuerVaultAbi,\n issuerOverrideHelperAbi,\n issuerPolicyModuleAbis,\n issuerAdapterAbi,\n issuerRegistryAbi,\n issuerPolicyRegistryAbi,\n issuerSandboxVaultAbi,\n} from './abi.js';\nimport { issuerPaymentTokenAbi } from './abi.js';\nimport { OpacityIssuerOperationError } from './validation.js';\nimport type { IssuerTransaction } from './types.js';\nimport type { IssuerPolicyKind } from './policies.js';\n\n/** Every builder is offline. Simulate with the intended sender before signing/sending. */\nexport interface IssuerOperationContext {\n address: Address;\n from: Address;\n chainId: number;\n}\n\ntype WriteName<A extends Abi> = ContractFunctionName<A, 'nonpayable' | 'payable'>;\nexport type IssuerOperationParams<\n A extends Abi,\n N extends WriteName<A> = WriteName<A>,\n> = IssuerOperationContext & {\n functionName: N;\n args: ContractFunctionArgs<A, 'nonpayable' | 'payable', N>;\n};\n\nfunction address(value: Address, name: string, allowZero = false): Address {\n if (\n typeof value !== 'string' ||\n !isAddress(value, { strict: false }) ||\n (!allowZero && value === zeroAddress)\n )\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${name} must be a ${allowZero ? '' : 'nonzero '}address.`,\n );\n return getAddress(value);\n}\nfunction uint(value: bigint, name: string, positive = false): bigint {\n if (typeof value !== 'bigint' || value < (positive ? 1n : 0n) || value > maxUint256)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${name} must be a ${positive ? 'positive ' : ''}uint256 bigint.`,\n );\n return value;\n}\nfunction bytes32(value: Hex, name: string, nonzero = false): Hex {\n if (!/^0x[\\da-fA-F]{64}$/.test(value) || (nonzero && value === zeroHash))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${name} must be ${nonzero ? 'nonzero ' : ''}bytes32.`,\n );\n return value;\n}\nfunction bytes(value: Hex, name: string): Hex {\n if (!/^0x(?:[\\da-fA-F]{2})*$/.test(value))\n throw new OpacityIssuerOperationError('invalid-input', `${name} must be hex bytes.`);\n return value;\n}\nfunction chain(value: number): number {\n if (!Number.isSafeInteger(value) || value <= 0)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'chainId must be a positive safe integer.',\n );\n return value;\n}\n\nfunction buildOperation(\n abi: Abi,\n params: IssuerOperationContext & { functionName: string; args: unknown },\n): IssuerTransaction {\n if (!Array.isArray(params.args))\n throw new OpacityIssuerOperationError('invalid-input', 'args must be an array.');\n const fn = abi.find((entry) => entry.type === 'function' && entry.name === params.functionName);\n if (\n !fn ||\n fn.type !== 'function' ||\n (fn.stateMutability !== 'nonpayable' && fn.stateMutability !== 'payable')\n )\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${params.functionName} is not a writable contract function.`,\n );\n if (params.args.length !== fn.inputs.length)\n throw new OpacityIssuerOperationError('invalid-input', 'Wrong number of contract arguments.');\n fn.inputs.forEach((input, index) =>\n validateAbiValue(input, (params.args as unknown[])[index], input.name || `arg${index}`),\n );\n return {\n to: address(params.address, 'address'),\n from: address(params.from, 'from'),\n chainId: chain(params.chainId),\n data: encodeFunctionData({ abi, functionName: params.functionName, args: params.args }),\n value: 0n,\n };\n}\n\nfunction requireOperation(name: string, supported: readonly string[]): void {\n if (!supported.includes(name))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${name} is not supported by this issuer operation builder.`,\n );\n}\n\ntype InputShape = {\n type: string;\n components?: readonly InputShape[] | undefined;\n name?: string | undefined;\n};\nfunction validateAbiValue(input: InputShape, value: unknown, name: string): void {\n const array = /\\[(\\d*)\\]$/.exec(input.type);\n if (array) {\n if (!Array.isArray(value) || (array[1] && value.length !== Number(array[1])))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${name} has an invalid array length.`,\n );\n value.forEach((entry, index) =>\n validateAbiValue(\n { ...input, type: input.type.slice(0, array.index) },\n entry,\n `${name}[${index}]`,\n ),\n );\n return;\n }\n if (input.type === 'tuple') {\n if (!value || typeof value !== 'object')\n throw new OpacityIssuerOperationError('invalid-input', `${name} must be a tuple.`);\n input.components?.forEach((component, index) =>\n validateAbiValue(\n component,\n Array.isArray(value)\n ? value[index]\n : (value as Record<string, unknown>)[component.name ?? ''],\n `${name}.${component.name ?? index}`,\n ),\n );\n return;\n }\n if (input.type === 'address') {\n address(value as Address, name, true);\n return;\n }\n if (input.type === 'bool' && typeof value !== 'boolean')\n throw new OpacityIssuerOperationError('invalid-input', `${name} must be boolean.`);\n if (input.type === 'string' && typeof value !== 'string')\n throw new OpacityIssuerOperationError('invalid-input', `${name} must be a string.`);\n if (input.type.startsWith('bytes')) {\n bytes(value as Hex, name);\n const size = Number(input.type.slice(5));\n if (size && (value as string).length !== 2 + size * 2)\n throw new OpacityIssuerOperationError('invalid-input', `${name} must be bytes${size}.`);\n }\n if (/^uint\\d*$/.test(input.type)) {\n const bits = Number(input.type.slice(4) || 256);\n if (bits <= 48) {\n if (\n typeof value !== 'number' ||\n !Number.isSafeInteger(value) ||\n value < 0 ||\n value >= 2 ** bits\n )\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${name} must be a uint${bits} integer.`,\n );\n } else if (typeof value !== 'bigint' || value < 0n || value >= 1n << BigInt(bits))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${name} must be a uint${bits} bigint.`,\n );\n }\n}\n\n/**\n * PR #156 token control and standard ERC-1155 operations. owner is fixed at deployment (there is\n * no ownership-transfer function). owner changes metadata/caps/admin; issuerAdmin or registry\n * complianceAdmin mints/freezes/pauses/manages wallets and token traits. Revocation gates owner\n * and issuerAdmin operations; setTransferOperator/setVenueOperator remain owner kill switches.\n * Operator-only execute* and initializers are intentionally excluded from the issuer API.\n */\nconst tokenOperationNames = [\n 'setName',\n 'setSymbol',\n 'setUri',\n 'setMaxSupply',\n 'setIssuerAdmin',\n 'setPolicyEngine',\n 'setTokenTraitRegistry',\n 'setTransferOperator',\n 'setVenueOperator',\n 'mint',\n 'forcedTransfer',\n 'setAccountFrozen',\n 'setFrozenTokens',\n 'setPaused',\n 'setMintingPaused',\n 'setWallet',\n 'setUserTraits',\n 'setApprovalForAll',\n 'safeTransferFrom',\n 'safeBatchTransferFrom',\n] as const;\nexport type IssuerTokenOperation = (typeof tokenOperationNames)[number];\nexport function buildTokenOperation<N extends IssuerTokenOperation>(\n params: IssuerOperationParams<typeof issuerTokenAbi, N>,\n): IssuerTransaction {\n requireOperation(params.functionName, tokenOperationNames);\n const transaction = buildOperation(issuerTokenAbi, params);\n validateTokenOperation(params.functionName, params.args as readonly unknown[]);\n return transaction;\n}\n\nfunction validateTokenOperation(name: string, args: readonly unknown[]): void {\n if (name === 'setName' || name === 'setSymbol') {\n if (typeof args[0] !== 'string' || args[0].length === 0)\n throw new OpacityIssuerOperationError('invalid-input', `${name} requires a nonempty string.`);\n }\n if (name === 'mint' || name === 'forcedTransfer') {\n address(args[0] as Address, name === 'mint' ? 'to' : 'from');\n if (name === 'forcedTransfer') address(args[1] as Address, 'to', true);\n const offset = name === 'mint' ? 1 : 2;\n uint(args[offset] as bigint, 'tokenId');\n uint(args[offset + 1] as bigint, 'amount');\n }\n if (name === 'setWallet') {\n if (args[0] !== 0 && args[0] !== 1)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Wallet kind must be 0 (issuer) or 1 (LP).',\n );\n if (!(args[1] as readonly Address[]).length)\n throw new OpacityIssuerOperationError('invalid-input', 'Wallet list must not be empty.');\n (args[1] as readonly Address[]).forEach((account) => address(account, 'wallet'));\n }\n if (name === 'setUserTraits') {\n const users = args[0] as readonly Hex[];\n if (users.length < 1 || users.length > 200)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'setUserTraits requires 1..200 UserIDs; use buildSetUserTraitsTransactions to chunk.',\n );\n users.forEach((id) => bytes32(id, 'userId', true));\n bytes32(args[1] as Hex, 'traitId', true);\n }\n if (name === 'safeBatchTransferFrom')\n validateTransferBatch(args[2] as readonly bigint[], args[3] as readonly bigint[]);\n}\n\nfunction validateTransferBatch(ids: readonly bigint[], values: readonly bigint[]): void {\n if (!ids.length || ids.length !== values.length)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Transfer ids/values must be nonempty with equal length.',\n );\n ids.forEach((id) => uint(id, 'tokenId'));\n values.forEach((value) => uint(value, 'amount'));\n if (new Set(ids.map(String)).size !== ids.length)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Duplicate token IDs are rejected by PR #156.',\n );\n}\n\n/**\n * Token owner (while authorized) or registry platformOperator/complianceAdmin manages attachments.\n * issuerAdmin alone does not. finalizeInitialPolicies is permissionless. Policy approval is\n * platform curated on stock deployments and public on sandbox v3. detach is swap-and-pop;\n * detached scoped module state persists.\n */\nconst policyEngineOperationNames = [\n 'attachPolicy',\n 'detachPolicy',\n 'detachPolicyByImpl',\n 'detachPolicyByImplAndScopeKey',\n 'reconfigurePolicy',\n 'applyPolicyBatch',\n 'setPrivilegedSenders',\n 'setMaxPolicies',\n 'finalizeInitialPolicies',\n] as const;\nexport type IssuerPolicyEngineOperation = (typeof policyEngineOperationNames)[number];\nexport function buildPolicyEngineOperation<N extends IssuerPolicyEngineOperation>(\n params: IssuerOperationParams<typeof issuerPolicyEngineAbi, N>,\n): IssuerTransaction {\n requireOperation(params.functionName, policyEngineOperationNames);\n const transaction = buildOperation(issuerPolicyEngineAbi, params);\n if (params.functionName === 'setPrivilegedSenders') {\n const args = params.args as readonly unknown[];\n (args[1] as readonly Hex[]).forEach((id) => bytes32(id, 'userId', true));\n }\n return transaction;\n}\n\ntype PolicyModuleAbis = typeof issuerPolicyModuleAbis;\n/**\n * Scoped module setters require token issuerAdmin/complianceAdmin, which differs from engine\n * attachment authority. Unlike token.onlyAdmin, PR #156 module setters do not check issuer\n * authorization. clearTokenState purges persistent state; detach/reattach does not.\n */\nexport function buildPolicyModuleOperation<\n K extends IssuerPolicyKind,\n N extends WriteName<PolicyModuleAbis[K]>,\n>(params: IssuerOperationParams<PolicyModuleAbis[K], N> & { policy: K }): IssuerTransaction {\n if (!Object.hasOwn(issuerPolicyModuleAbis, params.policy))\n throw new OpacityIssuerOperationError('invalid-input', 'Unknown policy module.');\n return buildOperation(issuerPolicyModuleAbis[params.policy], params);\n}\n\n/**\n * Stock applyRuleSet admits only authorizedDeployer. Sandbox v3 also admits the target token's\n * authorized owner/platform policy manager. Configuration/ownership operations still belong to\n * the orchestrator owner. prepareRuleSet simulates the actual deployed variant's caller gate.\n */\nexport function buildRuleSetOperation<\n N extends Exclude<\n WriteName<typeof issuerRuleSetOrchestratorAbi>,\n 'initialize' | 'upgradeToAndCall'\n >,\n>(params: IssuerOperationParams<typeof issuerRuleSetOrchestratorAbi, N>): IssuerTransaction {\n requireOperation(params.functionName, [\n 'applyRuleSet',\n 'setPolicyImpl',\n 'setPolicyEngine',\n 'setAuthorizedDeployer',\n 'transferOwnership',\n 'acceptOwnership',\n 'acceptAllowlistPlatformOperator',\n ]);\n return buildOperation(issuerRuleSetOrchestratorAbi, params);\n}\n\n/**\n * Token owner/platform configures signers and flow limits. issuerAdmin/complianceAdmin are implicit\n * signers. Signed overrides bypass only Layer 2; allowlisting, freezes and transfer-pause still\n * apply. mintWithAuth requires a token admin; safeTransferFromWithAuth requires caller == holder.\n * Helper ownership/upgrade operations affect the shared protocol and are excluded here.\n */\nexport type IssuerOverrideOperation =\n | 'setOverrideSigner'\n | 'setOverrideFlowLimit'\n | 'safeTransferFromWithOverride'\n | 'safeTransferFromWithAuth'\n | 'mintWithAuth';\nexport function buildOverrideOperation<N extends IssuerOverrideOperation>(\n params: IssuerOperationParams<typeof issuerOverrideHelperAbi, N>,\n): IssuerTransaction {\n requireOperation(params.functionName, [\n 'setOverrideSigner',\n 'setOverrideFlowLimit',\n 'safeTransferFromWithOverride',\n 'safeTransferFromWithAuth',\n 'mintWithAuth',\n ]);\n const transaction = buildOperation(issuerOverrideHelperAbi, params);\n const args = params.args as readonly unknown[];\n if (params.functionName === 'setOverrideFlowLimit') {\n const max = uint(args[1] as bigint, 'maxPerWindow');\n const window = uint(args[2] as bigint, 'windowSeconds');\n if (max > 0n && (window === 0n || window > 31536000n))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Enabled override flow limit window must be 1..31536000 seconds.',\n );\n }\n if (params.functionName === 'setOverrideSigner') address(args[1] as Address, 'signer');\n if (params.functionName === 'safeTransferFromWithAuth') {\n const transfer = args[0] as {\n from: Address;\n ids: readonly bigint[];\n values: readonly bigint[];\n };\n if (address(transfer.from, 'holder') !== address(params.from, 'from'))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'safeTransferFromWithAuth must be sent by the token holder.',\n );\n validateTransferBatch(transfer.ids, transfer.values);\n }\n return transaction;\n}\n\n/**\n * Example vault has immutable token/tokenId/payment token and NO owner/treasury/admin setters.\n * Deposits mint 1:1 RAW units; withdraw burns the caller's position via the vault's admin\n * forcedTransfer and refunds stablecoin. Withdraw bypasses transfer pause/freeze/policies by\n * design, but issuer revocation disables the vault admin and blocks redemption too.\n */\nexport function buildVaultOperation<N extends 'deposit' | 'withdraw'>(\n params: IssuerOperationParams<typeof issuerVaultAbi, N>,\n): IssuerTransaction {\n requireOperation(params.functionName, ['deposit', 'withdraw']);\n const transaction = buildOperation(issuerVaultAbi, params);\n uint((params.args as readonly unknown[])[0] as bigint, 'amount', true);\n return transaction;\n}\n\nexport type IssuerSandboxRegistryOperation =\n 'sandboxRegisterIssuer' | 'sandboxAddSelf' | 'sandboxSetSelfTrait';\n\n/** Sandbox-only self-service. Registration can deliberately restore an admin-revoked issuer. */\nexport function buildSandboxRegistryOperation<N extends IssuerSandboxRegistryOperation>(\n params: IssuerOperationParams<typeof issuerRegistryAbi, N>,\n): IssuerTransaction {\n requireOperation(params.functionName, [\n 'sandboxRegisterIssuer',\n 'sandboxAddSelf',\n 'sandboxSetSelfTrait',\n ]);\n const transaction = buildOperation(issuerRegistryAbi, params);\n if (params.functionName === 'sandboxSetSelfTrait')\n bytes32((params.args as readonly unknown[])[0] as Hex, 'traitId', true);\n return transaction;\n}\n\nexport function buildIssuerSandboxRegisterIssuerTransaction(\n params: IssuerOperationContext,\n): IssuerTransaction {\n return buildSandboxRegistryOperation({\n ...params,\n functionName: 'sandboxRegisterIssuer',\n args: [],\n });\n}\n\nexport function buildIssuerSandboxAddSelfTransaction(\n params: IssuerOperationContext,\n): IssuerTransaction {\n return buildSandboxRegistryOperation({ ...params, functionName: 'sandboxAddSelf', args: [] });\n}\n\n/** Global/document traits are intentionally public and scoped to the caller's bound UserID. */\nexport function buildIssuerSandboxSetSelfTraitTransaction(\n params: IssuerOperationContext & { traitId: Hex; enabled: boolean },\n): IssuerTransaction {\n return buildSandboxRegistryOperation({\n ...params,\n functionName: 'sandboxSetSelfTrait',\n args: [params.traitId, params.enabled],\n });\n}\n\n/** Propose/execute are public on SandboxPolicyRegistry. Stock proposals and cancel/revoke require admin. */\nexport function buildPolicyRegistryOperation<\n N extends 'proposeApproval' | 'executeApproval' | 'cancelApproval' | 'revokePolicy',\n>(params: IssuerOperationParams<typeof issuerPolicyRegistryAbi, N>): IssuerTransaction {\n requireOperation(params.functionName, [\n 'proposeApproval',\n 'executeApproval',\n 'cancelApproval',\n 'revokePolicy',\n ]);\n const transaction = buildOperation(issuerPolicyRegistryAbi, params);\n address((params.args as readonly unknown[])[0] as Address, 'implementation');\n return transaction;\n}\n\nexport type IssuerSandboxVaultAdminOperation = 'executeTokenAdmin' | 'executeAdmin';\nexport type IssuerSandboxVaultAdminParams = {\n [N in IssuerSandboxVaultAdminOperation]: IssuerOperationParams<typeof issuerSandboxVaultAbi, N>;\n}[IssuerSandboxVaultAdminOperation];\n\n/**\n * Sandbox vault forwards any calldata/target for its TOKEN OWNER, including reserve transfers.\n * Inner calls run as the vault and retain the target's own role checks; forwarding does not grant\n * token-owner authority. No native value is forwarded. Deposits/withdrawals remain investor calls.\n */\nexport function buildSandboxVaultOperation<\n N extends IssuerSandboxVaultAdminOperation | 'deposit' | 'withdraw',\n>(params: IssuerOperationParams<typeof issuerSandboxVaultAbi, N>): IssuerTransaction {\n requireOperation(params.functionName, [\n 'executeTokenAdmin',\n 'executeAdmin',\n 'deposit',\n 'withdraw',\n ]);\n const transaction = buildOperation(issuerSandboxVaultAbi, params);\n if (params.functionName === 'deposit' || params.functionName === 'withdraw')\n uint((params.args as readonly unknown[])[0] as bigint, 'amount', true);\n return transaction;\n}\n\n/** Example adapter is immutable, reports ERC-20 decimals=18, and needs underlying ERC-1155 approval. */\nexport function buildAdapterOperation<N extends 'approve' | 'transfer' | 'transferFrom'>(\n params: IssuerOperationParams<typeof issuerAdapterAbi, N>,\n): IssuerTransaction {\n requireOperation(params.functionName, ['approve', 'transfer', 'transferFrom']);\n return buildOperation(issuerAdapterAbi, params);\n}\n/** Approval of the vault's accepted payment token; no payment-token mint authority is assumed. */\nexport function buildPaymentTokenOperation(\n params: IssuerOperationParams<typeof issuerPaymentTokenAbi, 'approve'>,\n): IssuerTransaction {\n requireOperation(params.functionName, ['approve']);\n const transaction = buildOperation(issuerPaymentTokenAbi, params);\n address(params.args[0], 'spender');\n uint(params.args[1], 'amount');\n return transaction;\n}\n\n/** Owner only; this changes operational authority immediately, not token ownership. Zero disables issuer admin. */\nexport function buildSetIssuerAdminTransaction(\n params: IssuerOperationContext & { issuerAdmin: Address },\n): IssuerTransaction {\n return buildTokenOperation({\n ...params,\n functionName: 'setIssuerAdmin',\n args: [address(params.issuerAdmin, 'issuerAdmin', true)],\n });\n}\n\n/**\n * Owner only. The stock vault must receive the entire issuerAdmin role; it cannot forward freeze,\n * wallet, trait, or other admin calls. Configure those before handoff, or owner must rotate back\n * temporarily. Vault deposits/redemptions stop while issuerAdmin is assigned elsewhere.\n */\nexport function buildConfigureVaultTransaction(\n params: IssuerOperationContext & { vault: Address },\n): IssuerTransaction {\n return buildSetIssuerAdminTransaction({ ...params, issuerAdmin: address(params.vault, 'vault') });\n}\n\n/** Minting is independent of transfer pause and still checks cap, recipient, and receiver policies. */\nexport function buildMintTransaction(\n params: IssuerOperationContext & { to: Address; tokenId: bigint; amount: bigint },\n): IssuerTransaction {\n return buildTokenOperation({\n ...params,\n functionName: 'mint',\n args: [params.to, params.tokenId, params.amount],\n });\n}\n/** Admin seizure bypasses both compliance layers; zero recipient is the supported ADMIN BURN path. */\nexport function buildForcedTransferTransaction(\n params: IssuerOperationContext & {\n holder: Address;\n to: Address;\n tokenId: bigint;\n amount: bigint;\n },\n): IssuerTransaction {\n return buildTokenOperation({\n ...params,\n functionName: 'forcedTransfer',\n args: [params.holder, params.to, params.tokenId, params.amount],\n });\n}\n/** Issuer/LP wallet exemptions apply only to senders; they do not authorize issuer deployment or recipients. */\nexport function buildSetWalletsTransaction(\n params: IssuerOperationContext & {\n kind: 'issuer' | 'lp';\n accounts: readonly Address[];\n enabled: boolean;\n },\n): IssuerTransaction {\n if (params.kind !== 'issuer' && params.kind !== 'lp')\n throw new OpacityIssuerOperationError('invalid-input', 'Unknown wallet kind.');\n return buildTokenOperation({\n ...params,\n functionName: 'setWallet',\n args: [params.kind === 'issuer' ? 0 : 1, params.accounts, params.enabled],\n });\n}\n/** Calls the TOKEN wrapper, never the registry directly (registry setters are caller-namespaced). */\nexport function buildSetUserTraitsTransactions(\n params: IssuerOperationContext & { userIds: readonly Hex[]; traitId: Hex; enabled: boolean },\n): IssuerTransaction[] {\n if (!params.userIds.length)\n throw new OpacityIssuerOperationError('invalid-input', 'userIds must not be empty.');\n const result: IssuerTransaction[] = [];\n for (let i = 0; i < params.userIds.length; i += 200)\n result.push(\n buildTokenOperation({\n ...params,\n functionName: 'setUserTraits',\n args: [params.userIds.slice(i, i + 200), params.traitId, params.enabled],\n }),\n );\n return result;\n}\n/** Metadata setters are independent transactions, with no atomic batch facility on this token. */\nexport function buildTokenMetadataTransactions(\n params: IssuerOperationContext & { name?: string | undefined; symbol?: string; uri?: string },\n): IssuerTransaction[] {\n const result: IssuerTransaction[] = [];\n if (params.name !== undefined)\n result.push(buildTokenOperation({ ...params, functionName: 'setName', args: [params.name] }));\n if (params.symbol !== undefined)\n result.push(\n buildTokenOperation({ ...params, functionName: 'setSymbol', args: [params.symbol] }),\n );\n if (params.uri !== undefined)\n result.push(buildTokenOperation({ ...params, functionName: 'setUri', args: [params.uri] }));\n if (!result.length)\n throw new OpacityIssuerOperationError('invalid-input', 'Provide at least one metadata field.');\n return result;\n}\n\nexport interface IssuerOverrideAuthorization {\n token: Address;\n helper: Address;\n from: Address;\n to: Address;\n fromUserId: Hex;\n toUserId: Hex;\n tokenId: bigint;\n amount: bigint;\n data: Hex;\n nonce: Hex;\n expiry: bigint;\n chainId: number;\n}\n\nexport const issuerOverrideTypes = {\n Override: [\n { name: 'token', type: 'address' },\n { name: 'helper', type: 'address' },\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'fromUserId', type: 'bytes32' },\n { name: 'toUserId', type: 'bytes32' },\n { name: 'tokenId', type: 'uint256' },\n { name: 'amount', type: 'uint256' },\n { name: 'data', type: 'bytes' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'expiry', type: 'uint256' },\n { name: 'chainId', type: 'uint256' },\n ],\n} as const;\n\n/**\n * Exact PR #156 EIP-712: domain has ONLY name/version. Chain, token, helper, both wallets and\n * callback data are signed in the MESSAGE. Changing any of them invalidates the signature.\n * Resolve UserIDs on-chain and inspect nonce/expiry/flow limit before signing. Contract recovery\n * uses ECDSA: ERC-1271 signatures from a smart-contract issuerAdmin are not supported here.\n */\nexport function buildOverrideTransferTypedData(auth: IssuerOverrideAuthorization) {\n return {\n domain: { name: 'SecurityToken', version: '1' } as const,\n types: issuerOverrideTypes,\n primaryType: 'Override' as const,\n message: {\n token: address(auth.token, 'token'),\n helper: address(auth.helper, 'helper'),\n from: address(auth.from, 'from'),\n to: address(auth.to, 'to'),\n fromUserId: bytes32(auth.fromUserId, 'fromUserId'),\n toUserId: bytes32(auth.toUserId, 'toUserId'),\n tokenId: uint(auth.tokenId, 'tokenId'),\n amount: uint(auth.amount, 'amount'),\n data: bytes(auth.data, 'data'),\n nonce: bytes32(auth.nonce, 'nonce'),\n expiry: uint(auth.expiry, 'expiry'),\n chainId: BigInt(chain(auth.chainId)),\n },\n };\n}\n\n/** Permissionless submission of a signed authorization; sender pays gas and is not the holder. */\nexport function buildOverrideTransferTransaction(params: {\n authorization: IssuerOverrideAuthorization;\n signature: Hex;\n from: Address;\n}): IssuerTransaction {\n const auth = params.authorization;\n buildOverrideTransferTypedData(auth);\n if (!/^0x[\\da-fA-F]{130}$/.test(params.signature))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Override signature must be a 65-byte ECDSA signature.',\n );\n return buildOverrideOperation({\n address: auth.helper,\n from: params.from,\n chainId: auth.chainId,\n functionName: 'safeTransferFromWithOverride',\n args: [\n auth.token,\n auth.from,\n auth.to,\n auth.tokenId,\n auth.amount,\n auth.data,\n {\n fromUserId: auth.fromUserId,\n toUserId: auth.toUserId,\n tokenId: auth.tokenId,\n amount: auth.amount,\n nonce: auth.nonce,\n expiry: auth.expiry,\n },\n params.signature,\n ],\n });\n}\n","import {\n encodeAbiParameters,\n keccak256,\n maxUint256,\n stringToHex,\n zeroAddress,\n zeroHash,\n} from 'viem';\nimport type { Address, Hex } from 'viem';\nimport { OpacityIssuerOperationError } from './validation.js';\n\n/** PR #156 ordinals; these are part of the contracts' wire format. */\nexport const IssuerRuleType = {\n tradingDisabled: 0,\n allowedTransferee: 1,\n holderCountCap: 2,\n floorBalance: 3,\n ceilingBalance: 4,\n denylist: 5,\n insiderFreeze: 6,\n selfTransferOnly: 7,\n} as const;\nexport type IssuerPolicyKind = keyof typeof IssuerRuleType;\nexport const IssuerGuardMode = { none: 0, from: 1, to: 2, either: 3 } as const;\nexport const IssuerDenominatorMode = { currentSupply: 0, maxSupply: 1 } as const;\n\nexport const issuerPolicyTypes = Object.freeze({\n tradingDisabled: keccak256(stringToHex('TRADING_DISABLED_V1')),\n allowedTransferee: keccak256(stringToHex('ALLOWED_TRANSFEREE_V1')),\n holderCountCap: keccak256(stringToHex('HOLDER_COUNT_CAP_V1')),\n floorBalance: keccak256(stringToHex('FLOOR_BALANCE_V1')),\n ceilingBalance: keccak256(stringToHex('CEILING_BALANCE_V1')),\n denylist: keccak256(stringToHex('DENYLIST_V1')),\n insiderFreeze: keccak256(stringToHex('INSIDER_FREEZE_V1')),\n selfTransferOnly: keccak256(stringToHex('SELF_TRANSFER_ONLY_V1')),\n});\n\nexport interface PolicyAttachment {\n impl: Address;\n scopeKey: Hex;\n guardTrait: Hex;\n guardMode: 0 | 1 | 2 | 3;\n guardTraitIsGlobal: boolean;\n config: Hex;\n}\n\nexport type PolicyGuard =\n | { mode: 'none'; trait?: never; global?: never }\n | { mode: 'from' | 'to' | 'either'; trait: Hex; global: boolean };\n\nfunction requireBytes32(value: Hex, label: string, nonzero = false): Hex {\n if (!/^0x[\\da-fA-F]{64}$/.test(value) || (nonzero && value === zeroHash)) {\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${label} must be ${nonzero ? 'nonzero ' : ''}bytes32.`,\n );\n }\n return value;\n}\n\nfunction requireUint(value: bigint, label: string, positive = false): bigint {\n if (typeof value !== 'bigint' || value < (positive ? 1n : 0n) || value > maxUint256) {\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n `${label} must be a ${positive ? 'positive ' : ''}uint256 bigint.`,\n );\n }\n return value;\n}\n\n/** Enabled trading-disabled policies also reject minting: direction is BOTH. */\nexport function encodeTradingDisabledConfig(enabled: boolean): Hex {\n if (typeof enabled !== 'boolean')\n throw new OpacityIssuerOperationError('invalid-input', 'enabled must be a boolean.');\n return encodeAbiParameters(\n [{ type: 'tuple', components: [{ name: 'enabled', type: 'bool' }] }],\n [{ enabled }],\n );\n}\n\n/** Global registry traits, not token.setUserTraits. Keep lists small: policy evaluation has a 200k gas budget. */\nexport function encodeAllowedTransfereeConfig(config: {\n requiredTraits: readonly Hex[];\n requireAll: boolean;\n}): Hex {\n if (!config.requiredTraits.length)\n throw new OpacityIssuerOperationError('invalid-input', 'requiredTraits must not be empty.');\n config.requiredTraits.forEach((trait) => requireBytes32(trait, 'requiredTrait', true));\n if (typeof config.requireAll !== 'boolean')\n throw new OpacityIssuerOperationError('invalid-input', 'requireAll must be a boolean.');\n // Solidity abi.decode(config, (Config)) requires the OUTER tuple offset for dynamic structs.\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [\n { name: 'requiredTraits', type: 'bytes32[]' },\n { name: 'requireAll', type: 'bool' },\n ],\n },\n ],\n [config],\n );\n}\n\nexport function encodeHolderCountCapConfig(maxHolders: bigint): Hex {\n return encodeAbiParameters(\n [{ type: 'tuple', components: [{ name: 'maxHolders', type: 'uint256' }] }],\n [{ maxHolders: requireUint(maxHolders, 'maxHolders', true) }],\n );\n}\n\n/** Floors are configured separately per UserID on FloorBalancePolicy.setFloor. */\nexport function encodeFloorBalanceConfig(): Hex {\n return '0x';\n}\n/** Denylist entries are configured separately on DenylistPolicy.setBlocked/batchSetBlocked. */\nexport function encodeDenylistConfig(): Hex {\n return '0x';\n}\nexport function encodeSelfTransferOnlyConfig(): Hex {\n return '0x';\n}\n\nexport type CeilingBalanceConfig =\n | { isPercentage: false; ceiling: bigint; denominatorMode?: 'currentSupply' }\n | { isPercentage: true; ceiling: bigint; denominatorMode: 'currentSupply' | 'maxSupply' };\n\n/** Percentage ceilings use basis points, 1..10000; maxSupply mode requires a nonzero token cap. */\nexport function encodeCeilingBalanceConfig(config: CeilingBalanceConfig): Hex {\n requireUint(config.ceiling, 'ceiling', true);\n if (typeof config.isPercentage !== 'boolean')\n throw new OpacityIssuerOperationError('invalid-input', 'isPercentage must be a boolean.');\n if (config.isPercentage && config.ceiling > 10000n)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Percentage ceiling cannot exceed 10000 basis points.',\n );\n if (config.isPercentage && config.denominatorMode === undefined)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Percentage ceilings require an explicit denominator mode.',\n );\n const mode = config.denominatorMode ?? 'currentSupply';\n if (!Object.hasOwn(IssuerDenominatorMode, mode))\n throw new OpacityIssuerOperationError('invalid-input', 'Unknown ceiling denominator mode.');\n if (!config.isPercentage && mode !== 'currentSupply')\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Absolute ceilings require currentSupply denominator mode.',\n );\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [\n { name: 'isPercentage', type: 'bool' },\n { name: 'ceiling', type: 'uint256' },\n { name: 'denominatorMode', type: 'uint8' },\n ],\n },\n ],\n [\n {\n isPercentage: config.isPercentage,\n ceiling: config.ceiling,\n denominatorMode: IssuerDenominatorMode[mode],\n },\n ],\n );\n}\n\n/** Token-scoped traits; wire TokenTraitRegistry before attaching and assign traits before relying on the freeze. */\nexport function encodeInsiderFreezeConfig(frozenTraits: readonly Hex[]): Hex {\n if (frozenTraits.length < 1 || frozenTraits.length > 32)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'frozenTraits must contain 1..32 traits.',\n );\n frozenTraits.forEach((trait) => requireBytes32(trait, 'frozenTrait', true));\n return encodeAbiParameters(\n [{ type: 'tuple', components: [{ name: 'frozenTraits', type: 'bytes32[]' }] }],\n [{ frozenTraits }],\n );\n}\n\n/** Registry approval is an on-chain prerequisite; attaching cannot approve a new implementation. */\nexport function createPolicyAttachment(params: {\n impl: Address;\n config: Hex;\n scopeKey?: Hex;\n guard?: PolicyGuard;\n}): PolicyAttachment {\n if (!/^0x[\\da-fA-F]{40}$/.test(params.impl) || params.impl === zeroAddress)\n throw new OpacityIssuerOperationError('invalid-input', 'impl must be a nonzero address.');\n if (!/^0x(?:[\\da-fA-F]{2})*$/.test(params.config))\n throw new OpacityIssuerOperationError('invalid-input', 'config must be hex bytes.');\n const guard = params.guard ?? { mode: 'none' };\n if (!Object.hasOwn(IssuerGuardMode, guard.mode))\n throw new OpacityIssuerOperationError('invalid-input', 'Unknown guard mode.');\n if (guard.mode === 'none' && (guard.trait !== undefined || guard.global !== undefined))\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'An inactive guard must not specify trait/global fields.',\n );\n if (guard.mode !== 'none' && typeof guard.global !== 'boolean')\n throw new OpacityIssuerOperationError('invalid-input', 'guard.global must be a boolean.');\n return {\n impl: params.impl,\n scopeKey: requireBytes32(params.scopeKey ?? zeroHash, 'scopeKey'),\n guardTrait: guard.mode === 'none' ? zeroHash : requireBytes32(guard.trait, 'guard.trait', true),\n guardMode: IssuerGuardMode[guard.mode],\n guardTraitIsGlobal: guard.mode === 'none' ? false : guard.global,\n config: params.config,\n };\n}\n\nexport interface PolicyBatchOperation {\n opType: 0 | 1 | 2;\n index: bigint;\n attached: PolicyAttachment;\n newConfig: Hex;\n}\nexport type PolicyChange =\n | { type: 'attach'; policy: PolicyAttachment }\n | { type: 'detach'; index: bigint }\n | { type: 'reconfigure'; index: bigint; config: Hex };\n\nconst emptyAttachment: PolicyAttachment = {\n impl: zeroAddress,\n scopeKey: zeroHash,\n guardTrait: zeroHash,\n guardMode: 0,\n guardTraitIsGlobal: false,\n config: '0x',\n};\n\n/** Indices are evaluated sequentially. Detach uses swap-and-pop and can change later indices. */\nexport function createPolicyBatch(changes: readonly PolicyChange[]): PolicyBatchOperation[] {\n if (!Array.isArray(changes))\n throw new OpacityIssuerOperationError('invalid-input', 'changes must be an array.');\n return changes.map((change) => {\n if (!change || !['attach', 'detach', 'reconfigure'].includes(change.type))\n throw new OpacityIssuerOperationError('invalid-input', 'Unknown policy change type.');\n if (change.type === 'attach')\n return { opType: 0, index: 0n, attached: { ...change.policy }, newConfig: '0x' };\n const index = requireUint(change.index, 'index');\n if (change.type === 'detach')\n return { opType: 1, index, attached: { ...emptyAttachment }, newConfig: '0x' };\n if (!/^0x(?:[\\da-fA-F]{2})*$/.test(change.config))\n throw new OpacityIssuerOperationError('invalid-input', 'config must be hex bytes.');\n return { opType: 2, index, attached: { ...emptyAttachment }, newConfig: change.config };\n });\n}\n\n/**\n * Owner-accessible alternative to the platform-gated RuleSetOrchestrator: encode this list for\n * PolicyEngine.applyPolicyBatch. Read currentCount immediately before simulation; concurrent\n * changes can invalidate the plan. Detaches top-down; scoped module state survives replacement.\n */\nexport function createPolicyReplacementBatch(\n currentCount: bigint,\n policies: readonly PolicyAttachment[],\n): PolicyBatchOperation[] {\n requireUint(currentCount, 'currentCount');\n // Off-chain allocation bound, not a contract cap (engine default is 16, configurable by owner).\n if (currentCount > 10000n || policies.length > 10000)\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Replacement helper supports at most 10000 policies; use explicit batches for larger lists.',\n );\n const changes: PolicyChange[] = [];\n for (let i = currentCount; i > 0n; i--) changes.push({ type: 'detach', index: i - 1n });\n changes.push(...policies.map((policy): PolicyChange => ({ type: 'attach', policy })));\n return createPolicyBatch(changes);\n}\n","import { SEPOLIA_SANDBOX_MANIFEST } from '../deployments/sepolia-sandbox.js';\nimport type { IssuerProtocolDeployment } from './types.js';\n\nconst { chainId, addresses } = SEPOLIA_SANDBOX_MANIFEST;\n/** Verified v3 sandbox: public issuer enrollment, eight approved policies and shared token traits. */\nexport const SANDBOX_ISSUER_DEPLOYMENT: Readonly<IssuerProtocolDeployment> = Object.freeze({\n chainId,\n factory: addresses.factory,\n allowlistRegistry: addresses.registry,\n beaconRegistry: addresses.beaconRegistry,\n policyEngine: addresses.policyEngine,\n policyRegistry: addresses.policyRegistry,\n overrideHelper: addresses.overrideHelper,\n ruleSetOrchestrator: addresses.orchestrator,\n tokenTraitRegistry: addresses.tokenTraitRegistry,\n});\n","import {\n BaseError,\n ContractFunctionRevertedError,\n ContractFunctionZeroDataError,\n decodeEventLog,\n decodeFunctionResult,\n defineChain,\n encodeFunctionData,\n ExecutionRevertedError,\n zeroAddress,\n zeroHash,\n} from 'viem';\nimport type { Address, Hash, Hex, PublicClient, WalletClient } from 'viem';\nimport {\n issuerBeaconRegistryAbi,\n issuerFactoryAbi,\n issuerPolicyEngineAbi,\n issuerPolicyRegistryAbi,\n issuerRegistryAbi,\n issuerTokenAbi,\n issuerPaymentTokenAbi,\n issuerRuleSetOrchestratorAbi,\n issuerSandboxVaultAbi,\n} from './abi.js';\nimport {\n buildIssuerDeployTokenTransaction,\n buildIssuerVaultDeployment,\n buildIssuerAdapterDeployment,\n buildIssuerSandboxVaultDeployment,\n} from './deployment.js';\nimport {\n buildIssuerSandboxAddSelfTransaction,\n buildIssuerSandboxRegisterIssuerTransaction,\n buildPolicyRegistryOperation,\n buildRuleSetOperation,\n buildSandboxVaultOperation,\n} from './operations.js';\nimport type { IssuerOperationContext, IssuerSandboxVaultAdminParams } from './operations.js';\nimport type { IssuerVaultDeploymentParams, IssuerAdapterDeploymentParams } from './deployment.js';\nimport type {\n IssuerClientOptions,\n IssuerDeployTokenParams,\n IssuerDeploymentBlocker,\n IssuerDeploymentReceiptResult,\n IssuerProtocolDeployment,\n IssuerReceiptResult,\n IssuerTokenParams,\n IssuerTransaction,\n IssuerWaitOptions,\n PreparedIssuerDeployment,\n SubmittedIssuerDeployment,\n SubmittedIssuerTransaction,\n IssuerSandboxCapabilities,\n IssuerSandboxAccountParams,\n IssuerSandboxRegistrationBlocker,\n IssuerPolicyApprovalParams,\n IssuerRuleSetParams,\n} from './types.js';\nimport {\n issuerAddress,\n issuerBytes,\n issuerChainId,\n issuerDeployment,\n issuerDeployParams,\n issuerTransaction,\n issuerUint,\n OpacityIssuerOperationError,\n sameIssuerAddress,\n} from './validation.js';\n\nexport * from './abi.js';\nexport * from './types.js';\nexport * from './deployment.js';\nexport * from './operations.js';\nexport * from './policies.js';\nexport * from './sandbox-deployment.js';\nexport { OpacityIssuerOperationError } from './validation.js';\n\n/**\n * RPC-only issuer lifecycle. Explicit sends simulate once immediately before a wallet action.\n * Save records immediately; after an uncertain send/receipt, reconcile before any resubmission.\n */\nexport function createIssuersNamespace(options: IssuerClientOptions = {}) {\n const configuredChain =\n options.chainId === undefined ? undefined : issuerChainId(options.chainId);\n const busy = new Set<string>();\n async function clientFor(chainId: number): Promise<PublicClient> {\n issuerChainId(chainId);\n const client = options.publicClient;\n if (!client)\n throw new OpacityIssuerOperationError('missing-client', 'Issuer reads require publicClient.');\n if (\n (configuredChain !== undefined && configuredChain !== chainId) ||\n (client.chain !== undefined && client.chain.id !== chainId) ||\n (await client.getChainId()) !== chainId\n )\n throw new OpacityIssuerOperationError(\n 'chain-mismatch',\n 'RPC, SDK and requested issuer chains must agree.',\n );\n return client;\n }\n async function walletFor(tx: IssuerTransaction): Promise<WalletClient> {\n const wallet = options.walletClient;\n if (!wallet)\n throw new OpacityIssuerOperationError('missing-client', 'Issuer sends require walletClient.');\n if (\n (wallet.chain !== undefined && wallet.chain.id !== tx.chainId) ||\n (await wallet.getChainId()) !== tx.chainId\n )\n throw new OpacityIssuerOperationError(\n 'chain-mismatch',\n 'Wallet chain differs from the issuer transaction.',\n );\n const selected =\n wallet.account?.type === 'local' ? wallet.account.address : (await wallet.getAddresses())[0];\n if (\n !selected ||\n !sameIssuerAddress(selected, tx.from) ||\n (wallet.account && !sameIssuerAddress(wallet.account.address, tx.from))\n )\n throw new OpacityIssuerOperationError(\n 'account-mismatch',\n 'Selected wallet differs from the issuer transaction sender.',\n );\n return wallet;\n }\n async function requireCode(client: PublicClient, address: Address, blockNumber?: bigint) {\n const code = await client.getBytecode({\n address,\n ...(blockNumber === undefined ? {} : { blockNumber }),\n });\n if (!code || code === '0x')\n throw new OpacityIssuerOperationError(\n 'deployment-mismatch',\n `No contract code at ${address}.`,\n );\n }\n\n async function sandboxVersionAt(client: PublicClient, registry: Address, blockNumber: bigint) {\n try {\n return await client.readContract({\n address: registry,\n abi: issuerRegistryAbi,\n functionName: 'sandboxVersion',\n blockNumber,\n });\n } catch (cause) {\n // An absent marker is an unsupported capability. RPC failures must never look like one.\n const unsupported =\n cause instanceof BaseError\n ? cause.walk(\n (error) =>\n error instanceof ContractFunctionRevertedError ||\n error instanceof ContractFunctionZeroDataError,\n )\n : undefined;\n if (\n unsupported instanceof ContractFunctionRevertedError ||\n unsupported instanceof ContractFunctionZeroDataError\n )\n return null;\n throw cause;\n }\n }\n\n /** One-block registry state. Does not infer other sandbox variants from the registry marker. */\n async function getSandboxCapabilities(\n input: IssuerSandboxAccountParams,\n ): Promise<IssuerSandboxCapabilities> {\n const tx = buildIssuerSandboxAddSelfTransaction(sandboxAccountContext(input));\n const client = await clientFor(tx.chainId);\n const { number: blockNumber } = await client.getBlock({ blockTag: 'latest' });\n const registry = tx.to!;\n await requireCode(client, registry, blockNumber);\n const req = { address: registry, abi: issuerRegistryAbi, blockNumber } as const;\n const [sandboxVersion, paused, issuerAuthorized, allowed, userId, entryStatus] =\n await Promise.all([\n sandboxVersionAt(client, registry, blockNumber),\n client.readContract({ ...req, functionName: 'paused' }),\n client.readContract({ ...req, functionName: 'isAuthorizedIssuer', args: [tx.from] }),\n client.readContract({ ...req, functionName: 'isAllowed', args: [tx.from] }),\n client.readContract({ ...req, functionName: 'getUserId', args: [tx.from] }),\n client.readContract({ ...req, functionName: 'getEntryStatus', args: [tx.from] }),\n ]);\n return {\n chainId: tx.chainId,\n registry,\n account: tx.from,\n blockNumber,\n sandboxVersion,\n supportsSelfOnboarding: sandboxVersion !== null && sandboxVersion >= 1n,\n supportsSelfTraits: sandboxVersion !== null && sandboxVersion >= 2n,\n supportsIssuerRegistration: sandboxVersion !== null && sandboxVersion >= 3n,\n paused,\n issuerAuthorized,\n allowed,\n userId,\n entryStatus,\n };\n }\n\n function sandboxAccountContext(input: IssuerSandboxAccountParams): IssuerOperationContext {\n if ('deployment' in input) {\n const deployment = issuerDeployment(input.deployment);\n return {\n address: deployment.allowlistRegistry,\n chainId: deployment.chainId,\n from: input.from,\n };\n }\n return input;\n }\n\n /** Fresh/revoked issuers are both eligible for public re-registration; no enrollment bans are added. */\n async function prepareSandboxRegistration(input: IssuerSandboxAccountParams) {\n const transaction = buildIssuerSandboxRegisterIssuerTransaction(sandboxAccountContext(input));\n const capabilities = await getSandboxCapabilities({\n address: transaction.to!,\n from: transaction.from,\n chainId: transaction.chainId,\n });\n const blockers: IssuerSandboxRegistrationBlocker[] = [];\n if (!capabilities.supportsIssuerRegistration) blockers.push('unsupported-sandbox-version');\n if (capabilities.paused) blockers.push('registry-paused');\n if (capabilities.entryStatus === 2 || capabilities.entryStatus === 4)\n blockers.push('terminal-identity');\n return { capabilities, blockers, readyToSimulate: blockers.length === 0, transaction };\n }\n\n async function sendSandboxRegistration(\n input: IssuerSandboxAccountParams,\n ): Promise<SubmittedIssuerTransaction> {\n const transaction = buildIssuerSandboxRegisterIssuerTransaction(sandboxAccountContext(input));\n return exclusive(transaction, async () => {\n const prepared = await prepareSandboxRegistration({\n address: transaction.to!,\n from: transaction.from,\n chainId: transaction.chainId,\n });\n if (prepared.blockers.length)\n throw new OpacityIssuerOperationError(\n 'deployment-blocked',\n `Sandbox registration blocked: ${prepared.blockers.join(', ')}.`,\n );\n return { kind: 'transaction', hash: await write(transaction), transaction };\n });\n }\n async function prepareDeployment(\n input: IssuerDeployTokenParams,\n ): Promise<PreparedIssuerDeployment> {\n const params = issuerDeployParams(input);\n const { deployment: d, issuer, config, engine } = params;\n const client = await clientFor(d.chainId);\n const { number: blockNumber } = await client.getBlock({ blockTag: 'latest' });\n const pointers = new Set<Address>([\n d.factory,\n d.allowlistRegistry,\n d.beaconRegistry,\n ...[engine.policyEngine, engine.tokenTraitRegistry, engine.overrideHelper].filter(\n (v) => v !== zeroAddress,\n ),\n ]);\n await Promise.all([...pointers].map((a) => requireCode(client, a, blockNumber)));\n const factory = { address: d.factory, abi: issuerFactoryAbi, blockNumber } as const;\n const registry = { address: d.allowlistRegistry, abi: issuerRegistryAbi, blockNumber } as const;\n const beaconRegistry = {\n address: d.beaconRegistry,\n abi: issuerBeaconRegistryAbi,\n blockNumber,\n } as const;\n const [\n actualRegistry,\n actualBeaconRegistry,\n issuerNonce,\n issuerAuthorized,\n issuerAllowed,\n registryAdmin,\n nativeBalance,\n ] = await Promise.all([\n client.readContract({ ...factory, functionName: 'allowlistRegistry' }),\n client.readContract({ ...factory, functionName: 'beaconRegistry' }),\n client.readContract({ ...factory, functionName: 'getIssuerNonce', args: [issuer] }),\n client.readContract({ ...registry, functionName: 'isAuthorizedIssuer', args: [issuer] }),\n client.readContract({ ...registry, functionName: 'isAllowed', args: [issuer] }),\n client.readContract({ ...registry, functionName: 'admin' }),\n client.getBalance({ address: issuer, blockNumber }),\n ]);\n if (\n !sameIssuerAddress(actualRegistry, d.allowlistRegistry) ||\n !sameIssuerAddress(actualBeaconRegistry, d.beaconRegistry)\n )\n throw new OpacityIssuerOperationError(\n 'deployment-mismatch',\n 'Factory registries differ from the trusted deployment manifest.',\n );\n const resolvedBeaconVariant =\n config.beaconVariant === zeroHash\n ? await client.readContract({ ...beaconRegistry, functionName: 'getDefaultVariant' })\n : config.beaconVariant;\n const [beacon, active, predictedToken, factoryAuthorized] = await Promise.all([\n client.readContract({\n ...beaconRegistry,\n functionName: 'getBeacon',\n args: [resolvedBeaconVariant],\n }),\n client.readContract({\n ...beaconRegistry,\n functionName: 'isVariantActive',\n args: [resolvedBeaconVariant],\n }),\n client.readContract({\n ...factory,\n functionName: 'computeTokenAddress',\n args: [issuer, issuerNonce],\n }),\n client.readContract({\n ...beaconRegistry,\n functionName: 'isAuthorizedFactory',\n args: [d.factory],\n }),\n ]);\n if (active) await requireCode(client, beacon, blockNumber);\n const unapprovedPolicies: Address[] = [];\n if (engine.policyEngine !== zeroAddress) {\n const policyRegistry = await client.readContract({\n address: engine.policyEngine,\n abi: issuerPolicyEngineAbi,\n functionName: 'policyRegistry',\n blockNumber,\n });\n if (d.policyRegistry && !sameIssuerAddress(d.policyRegistry, policyRegistry))\n throw new OpacityIssuerOperationError(\n 'deployment-mismatch',\n 'Policy engine registry differs from the trusted manifest.',\n );\n if (engine.policies.length || d.policyRegistry)\n await requireCode(client, policyRegistry, blockNumber);\n const approvals = await Promise.all(\n engine.policies.map(async (policy) => ({\n impl: policy.impl,\n approved: await client.readContract({\n address: policyRegistry,\n abi: issuerPolicyRegistryAbi,\n functionName: 'isApproved',\n args: [policy.impl],\n blockNumber,\n }),\n })),\n );\n for (const p of approvals) if (!p.approved) unapprovedPolicies.push(p.impl);\n }\n const blockers: IssuerDeploymentBlocker[] = [];\n if (!issuerAuthorized) blockers.push('issuer-not-authorized');\n if (!factoryAuthorized) blockers.push('factory-not-authorized');\n if (!active) blockers.push('inactive-beacon');\n if (unapprovedPolicies.length) blockers.push('policy-not-approved');\n if (params.expectedNonce !== undefined && params.expectedNonce !== issuerNonce)\n blockers.push('nonce-changed');\n return {\n params,\n blockNumber,\n issuerNonce,\n predictedToken,\n resolvedBeaconVariant,\n beacon,\n issuerAuthorized,\n factoryAuthorized,\n issuerAllowed,\n registryAdmin,\n nativeBalance,\n unapprovedPolicies,\n blockers,\n readyToSimulate: blockers.length === 0,\n transaction: buildIssuerDeployTokenTransaction(params),\n };\n }\n async function simulateTransaction(input: IssuerTransaction) {\n const tx = issuerTransaction(input);\n const client = await clientFor(tx.chainId);\n if (tx.to) await requireCode(client, tx.to);\n try {\n // eth_call also executes contract creation, without persisting any state.\n return await client.call({\n account: tx.from,\n ...(tx.to === undefined ? {} : { to: tx.to }),\n data: tx.data,\n value: tx.value,\n });\n } catch (cause) {\n throw new OpacityIssuerOperationError(\n 'simulation-failed',\n 'Issuer transaction simulation failed; no transaction was submitted.',\n { cause },\n );\n }\n }\n async function simulateDeployment(input: IssuerDeployTokenParams) {\n const prepared = await prepareDeployment(input);\n if (prepared.blockers.length)\n throw new OpacityIssuerOperationError(\n 'deployment-blocked',\n `Issuer deployment blocked: ${prepared.blockers.join(', ')}.`,\n );\n await simulateTransaction(prepared.transaction);\n return prepared;\n }\n async function exclusive<T>(tx: IssuerTransaction, run: () => Promise<T>): Promise<T> {\n const key = `${tx.chainId}:${tx.from.toLowerCase()}`;\n if (busy.has(key))\n throw new OpacityIssuerOperationError(\n 'send-in-progress',\n 'An issuer wallet action is already in progress for this account.',\n );\n busy.add(key);\n try {\n return await run();\n } finally {\n busy.delete(key);\n }\n }\n async function write(tx: IssuerTransaction): Promise<Hash> {\n await clientFor(tx.chainId);\n let wallet = await walletFor(tx);\n await simulateTransaction(tx);\n wallet = await walletFor(tx);\n return wallet.sendTransaction({\n account: wallet.account ?? tx.from,\n chain:\n wallet.chain ??\n defineChain({\n id: tx.chainId,\n name: `Issuer chain ${tx.chainId}`,\n nativeCurrency: { name: 'Native', symbol: 'NATIVE', decimals: 18 },\n rpcUrls: { default: { http: [] } },\n }),\n ...(tx.to === undefined ? {} : { to: tx.to }),\n data: tx.data,\n value: tx.value,\n });\n }\n async function sendTransaction(input: IssuerTransaction): Promise<SubmittedIssuerTransaction> {\n const transaction = issuerTransaction(input);\n return exclusive(transaction, async () => ({\n kind: 'transaction',\n hash: await write(transaction),\n transaction,\n }));\n }\n async function sendDeployment(\n input: IssuerDeployTokenParams,\n ): Promise<SubmittedIssuerDeployment> {\n const params = issuerDeployParams(input);\n return exclusive(buildIssuerDeployTokenTransaction(params), async () => {\n const prepared = await prepareDeployment(params);\n if (prepared.blockers.length)\n throw new OpacityIssuerOperationError(\n 'deployment-blocked',\n `Issuer deployment blocked: ${prepared.blockers.join(', ')}.`,\n );\n const hash = await write(prepared.transaction);\n return {\n kind: 'deployment',\n hash,\n transaction: prepared.transaction,\n params,\n predictedToken: prepared.predictedToken,\n issuerNonce: prepared.issuerNonce,\n };\n });\n }\n async function optionalPaymentMetadata<T>(\n client: PublicClient,\n paymentToken: Address,\n blockNumber: bigint,\n functionName: 'decimals' | 'symbol',\n decode: (data: Hex) => T | undefined,\n ): Promise<T | undefined> {\n let data: Hex | undefined;\n try {\n ({ data } = await client.call({\n to: paymentToken,\n data: encodeFunctionData({ abi: issuerPaymentTokenAbi, functionName }),\n blockNumber,\n }));\n } catch (cause) {\n const reverted =\n cause instanceof BaseError\n ? cause.walk((error) => error instanceof ExecutionRevertedError)\n : undefined;\n if (reverted instanceof ExecutionRevertedError) return undefined;\n // Transport/RPC errors are not evidence that an optional token method is absent.\n throw cause;\n }\n if (!data || data === '0x') return undefined;\n // Only decoding the returned contract bytes is optional; the network call has already succeeded.\n try {\n return decode(data);\n } catch {\n return undefined;\n }\n }\n\n /**\n * Validate immutable vault dependencies. ERC20 metadata is informational: unavailable/invalid\n * decimals or symbol returns undefined, without guessing display units or excluding the token.\n * Getter checks cannot prove arbitrary ERC20 economics.\n */\n async function prepareVaultDeployment(value: IssuerVaultDeploymentParams) {\n const input = { ...value };\n const transaction = buildIssuerVaultDeployment(input);\n const client = await clientFor(transaction.chainId);\n const token = await getToken({\n chainId: input.chainId,\n token: input.token,\n tokenId: input.tokenId,\n account: input.from,\n });\n if (!sameIssuerAddress(token.owner, transaction.from))\n throw new OpacityIssuerOperationError(\n 'account-mismatch',\n 'Vault setup requires the token owner to retain authority to assign issuerAdmin.',\n );\n if (!token.issuerAuthorized)\n throw new OpacityIssuerOperationError(\n 'deployment-blocked',\n 'Token owner is no longer an authorized issuer.',\n );\n const paymentToken = issuerAddress(input.paymentToken, 'paymentToken');\n await requireCode(client, paymentToken, token.blockNumber);\n const [paymentDecimals, paymentSymbol] = await Promise.all([\n optionalPaymentMetadata(client, paymentToken, token.blockNumber, 'decimals', (data) => {\n const decimals = decodeFunctionResult({\n abi: issuerPaymentTokenAbi,\n functionName: 'decimals',\n data,\n });\n return Number.isInteger(decimals) && decimals >= 0 && decimals <= 255\n ? decimals\n : undefined;\n }),\n optionalPaymentMetadata(client, paymentToken, token.blockNumber, 'symbol', (data) =>\n decodeFunctionResult({ abi: issuerPaymentTokenAbi, functionName: 'symbol', data }),\n ),\n ]);\n return {\n transaction,\n token,\n paymentToken,\n paymentDecimals,\n paymentSymbol,\n exchange: 'one-to-one-raw-units' as const,\n requiresIssuerAdminAssignment: true as const,\n };\n }\n async function sendVaultDeployment(\n value: IssuerVaultDeploymentParams,\n ): Promise<SubmittedIssuerTransaction> {\n const input = { ...value };\n return exclusive(buildIssuerVaultDeployment(input), async () => {\n const { transaction } = await prepareVaultDeployment(input);\n return { kind: 'transaction', hash: await write(transaction), transaction };\n });\n }\n\n /** Same immutable dependency checks as the stock vault, plus the constructor's sandbox marker requirement. */\n async function prepareSandboxVaultDeployment(value: IssuerVaultDeploymentParams) {\n const input = { ...value };\n const transaction = buildIssuerSandboxVaultDeployment(input);\n const prepared = await prepareVaultDeployment(input);\n const client = await clientFor(transaction.chainId);\n const sandboxVersion = await sandboxVersionAt(\n client,\n prepared.token.allowlistRegistry,\n prepared.token.blockNumber,\n );\n if (sandboxVersion === null || sandboxVersion < 2n)\n throw new OpacityIssuerOperationError(\n 'deployment-blocked',\n 'SandboxIssuerVault requires a sandbox registry version of at least 2.',\n );\n return { ...prepared, transaction, sandboxVersion, ownerForwarding: true as const };\n }\n\n async function sendSandboxVaultDeployment(\n value: IssuerVaultDeploymentParams,\n ): Promise<SubmittedIssuerTransaction> {\n const input = { ...value };\n const transaction = buildIssuerSandboxVaultDeployment(input);\n return exclusive(transaction, async () => {\n await prepareSandboxVaultDeployment(input);\n return { kind: 'transaction', hash: await write(transaction), transaction };\n });\n }\n\n function sandboxVaultAdminTransaction(input: IssuerSandboxVaultAdminParams) {\n if (input.functionName !== 'executeTokenAdmin' && input.functionName !== 'executeAdmin')\n throw new OpacityIssuerOperationError(\n 'invalid-input',\n 'Expected a sandbox vault admin forwarding operation.',\n );\n return buildSandboxVaultOperation(input);\n }\n\n async function prepareSandboxVaultAdminTransaction(transaction: IssuerTransaction) {\n const client = await clientFor(transaction.chainId);\n const vault = transaction.to!;\n const { number: blockNumber } = await client.getBlock({ blockTag: 'latest' });\n await requireCode(client, vault, blockNumber);\n const token = await client.readContract({\n address: vault,\n abi: issuerSandboxVaultAbi,\n functionName: 'token',\n blockNumber,\n });\n await requireCode(client, token, blockNumber);\n const owner = await client.readContract({\n address: token,\n abi: issuerTokenAbi,\n functionName: 'owner',\n blockNumber,\n });\n if (!sameIssuerAddress(owner, transaction.from))\n throw new OpacityIssuerOperationError(\n 'account-mismatch',\n 'Sandbox vault forwarding requires the token owner.',\n );\n // Checks actual method availability and inner target authorization; a stock vault cannot pass.\n const simulation = await simulateTransaction(transaction);\n return { transaction, blockNumber, vault, token, owner, simulation };\n }\n\n async function prepareSandboxVaultOperation(input: IssuerSandboxVaultAdminParams) {\n return prepareSandboxVaultAdminTransaction(sandboxVaultAdminTransaction(input));\n }\n\n async function sendSandboxVaultOperation(\n input: IssuerSandboxVaultAdminParams,\n ): Promise<SubmittedIssuerTransaction> {\n const transaction = sandboxVaultAdminTransaction(input);\n return exclusive(transaction, async () => {\n await prepareSandboxVaultAdminTransaction(transaction);\n return { kind: 'transaction', hash: await write(transaction), transaction };\n });\n }\n /** Inspect underlying token before creating the example ERC20 facade (fixed 18 decimals). */\n async function prepareAdapterDeployment(value: IssuerAdapterDeploymentParams) {\n const input = { ...value };\n const transaction = buildIssuerAdapterDeployment(input);\n const token = await getToken({\n chainId: input.chainId,\n token: input.token,\n tokenId: input.tokenId,\n account: input.from,\n });\n return { transaction, token, decimals: 18 as const, transferEventsComplete: false as const };\n }\n async function sendAdapterDeployment(\n value: IssuerAdapterDeploymentParams,\n ): Promise<SubmittedIssuerTransaction> {\n const input = { ...value };\n return exclusive(buildIssuerAdapterDeployment(input), async () => {\n const { transaction } = await prepareAdapterDeployment(input);\n return { kind: 'transaction', hash: await write(transaction), transaction };\n });\n }\n async function waitForTransaction(\n record: SubmittedIssuerTransaction | SubmittedIssuerDeployment,\n wait: IssuerWaitOptions = {},\n ): Promise<IssuerReceiptResult> {\n const tx = issuerTransaction(record.transaction);\n const hash = issuerBytes(record.hash, 'hash', 32);\n const client = await clientFor(tx.chainId);\n let replacementReason: IssuerReceiptResult['replacementReason'];\n const receipt = await client.waitForTransactionReceipt({\n hash,\n ...wait,\n onReplaced: ({ reason }) => {\n replacementReason = reason;\n },\n });\n const base = { submittedHash: hash, hash: receipt.transactionHash, receipt };\n if (replacementReason || receipt.transactionHash.toLowerCase() !== hash.toLowerCase())\n return {\n ...base,\n status: 'replaced',\n ...(replacementReason === undefined ? {} : { replacementReason }),\n };\n if (receipt.status === 'reverted') return { ...base, status: 'reverted' };\n // Receipt success alone does not establish that a persisted record describes this transaction.\n const actual = await client.getTransaction({ hash });\n const actualTo = actual.to ?? undefined;\n const sameTarget =\n tx.to === undefined\n ? actualTo === undefined\n : actualTo !== undefined && sameIssuerAddress(tx.to, actualTo);\n const verified =\n actual.hash.toLowerCase() === hash.toLowerCase() &&\n sameIssuerAddress(actual.from, tx.from) &&\n sameTarget &&\n actual.input.toLowerCase() === tx.data.toLowerCase() &&\n actual.value === tx.value &&\n (actual.chainId === undefined || actual.chainId === tx.chainId) &&\n (tx.to !== undefined || !!receipt.contractAddress);\n return { ...base, status: verified ? 'confirmed' : 'unverified' };\n }\n async function waitForDeployment(\n record: SubmittedIssuerDeployment,\n wait?: IssuerWaitOptions,\n ): Promise<IssuerDeploymentReceiptResult> {\n const params = issuerDeployParams(record.params);\n const expected = buildIssuerDeployTokenTransaction(params);\n const result = await waitForTransaction(record, wait);\n if (result.status !== 'confirmed') return result;\n const tx = issuerTransaction(record.transaction);\n if (\n tx.chainId !== expected.chainId ||\n tx.to === undefined ||\n !sameIssuerAddress(tx.to, expected.to!) ||\n !sameIssuerAddress(tx.from, expected.from) ||\n tx.data.toLowerCase() !== expected.data.toLowerCase()\n )\n return { ...result, status: 'unverified' };\n const client = await clientFor(params.deployment.chainId);\n const predicted = await client.readContract({\n address: params.deployment.factory,\n abi: issuerFactoryAbi,\n functionName: 'computeTokenAddress',\n args: [params.issuer, issuerUint(record.issuerNonce, 'issuerNonce')],\n blockNumber: result.receipt.blockNumber,\n });\n if (!sameIssuerAddress(predicted, issuerAddress(record.predictedToken, 'predictedToken')))\n return { ...result, status: 'unverified' };\n const matches: Address[] = [];\n for (const log of result.receipt.logs) {\n if (!sameIssuerAddress(log.address, params.deployment.factory)) continue;\n try {\n const event = decodeEventLog({\n abi: issuerFactoryAbi,\n eventName: 'TokenDeployed',\n data: log.data,\n topics: log.topics,\n strict: true,\n });\n if (\n sameIssuerAddress(event.args.issuer, params.issuer) &&\n sameIssuerAddress(event.args.allowlistRegistry, params.deployment.allowlistRegistry) &&\n sameIssuerAddress(event.args.token, predicted)\n )\n matches.push(event.args.token);\n } catch {\n /* Other logs are not deployment evidence. */\n }\n }\n return matches.length === 1\n ? { ...result, token: matches[0]! }\n : { ...result, status: 'unverified' };\n }\n async function getIssuerTokens(input: { deployment: IssuerProtocolDeployment; issuer: Address }) {\n const d = issuerDeployment(input.deployment);\n const client = await clientFor(d.chainId);\n const actual = await client.readContract({\n address: d.factory,\n abi: issuerFactoryAbi,\n functionName: 'allowlistRegistry',\n });\n if (!sameIssuerAddress(actual, d.allowlistRegistry))\n throw new OpacityIssuerOperationError(\n 'deployment-mismatch',\n 'Factory registry differs from the trusted deployment.',\n );\n return client.readContract({\n address: d.factory,\n abi: issuerFactoryAbi,\n functionName: 'getIssuerTokens',\n args: [issuerAddress(input.issuer, 'issuer')],\n });\n }\n async function getToken(input: IssuerTokenParams) {\n const chainId = issuerChainId(input.chainId);\n const token = issuerAddress(input.token, 'token');\n const tokenId = issuerUint(input.tokenId ?? 1n, 'tokenId');\n const client = await clientFor(chainId);\n const { number: blockNumber } = await client.getBlock({ blockTag: 'latest' });\n await requireCode(client, token, blockNumber);\n const req = { address: token, abi: issuerTokenAbi, blockNumber } as const;\n const [\n owner,\n issuerAdmin,\n complianceAdmin,\n allowlistRegistry,\n paused,\n mintingPaused,\n name,\n symbol,\n uri,\n totalSupply,\n maxSupply,\n policyEngine,\n tokenTraitRegistry,\n transferOperator,\n ] = await Promise.all([\n client.readContract({ ...req, functionName: 'owner' }),\n client.readContract({ ...req, functionName: 'issuerAdmin' }),\n client.readContract({ ...req, functionName: 'complianceAdmin' }),\n client.readContract({ ...req, functionName: 'allowlistRegistry' }),\n client.readContract({ ...req, functionName: 'paused' }),\n client.readContract({ ...req, functionName: 'mintingPaused' }),\n client.readContract({ ...req, functionName: 'name' }),\n client.readContract({ ...req, functionName: 'symbol' }),\n client.readContract({ ...req, functionName: 'uri', args: [tokenId] }),\n client.readContract({ ...req, functionName: 'totalSupply', args: [tokenId] }),\n client.readContract({ ...req, functionName: 'getMaxSupply', args: [tokenId] }),\n client.readContract({ ...req, functionName: 'policyEngine' }),\n client.readContract({ ...req, functionName: 'tokenTraitRegistry' }),\n client.readContract({ ...req, functionName: 'transferOperator' }),\n ]);\n const [issuerAuthorized, policies, canManagePolicies] = await Promise.all([\n client.readContract({\n address: allowlistRegistry,\n abi: issuerRegistryAbi,\n functionName: 'isAuthorizedIssuer',\n args: [owner],\n blockNumber,\n }),\n policyEngine === zeroAddress\n ? []\n : client.readContract({\n address: policyEngine,\n abi: issuerPolicyEngineAbi,\n functionName: 'getPolicies',\n args: [token],\n blockNumber,\n }),\n input.account === undefined\n ? undefined\n : client.readContract({\n ...req,\n functionName: 'canManagePolicies',\n args: [issuerAddress(input.account, 'account')],\n }),\n ]);\n return {\n chainId,\n token,\n tokenId,\n blockNumber,\n owner,\n issuerAdmin,\n complianceAdmin,\n allowlistRegistry,\n issuerAuthorized,\n paused,\n mintingPaused,\n name,\n symbol,\n uri,\n totalSupply,\n maxSupply,\n policyEngine,\n tokenTraitRegistry,\n transferOperator,\n policies,\n canManagePolicies,\n };\n }\n /** Discover only approved implementations. Sandbox v3 callers can propose and approve custom policies themselves. */\n async function getApprovedPolicies(input: {\n chainId: number;\n policyRegistry: Address;\n policyType: Hex;\n }) {\n const client = await clientFor(input.chainId);\n const address = issuerAddress(input.policyRegistry, 'policyRegistry');\n const policyType = issuerBytes(input.policyType, 'policyType', 32);\n const { number: blockNumber } = await client.getBlock({ blockTag: 'latest' });\n const req = { address, abi: issuerPolicyRegistryAbi, blockNumber } as const;\n const implementations = await client.readContract({\n ...req,\n functionName: 'implementationsOf',\n args: [policyType],\n });\n const approved = await Promise.all(\n implementations.map((impl) =>\n client.readContract({ ...req, functionName: 'isApproved', args: [impl] }),\n ),\n );\n return { blockNumber, implementations: implementations.filter((_, i) => approved[i]) };\n }\n\n /**\n * Read the next approval step and simulate it for this caller. Sandbox proposals execute with\n * zero delay; stock policy registries retain their administrator gate and configured timelock.\n * Send nextTransaction, save/wait its receipt, then prepare again. Never sends or retries a batch.\n */\n async function preparePolicyApproval(value: IssuerPolicyApprovalParams) {\n const implementation = issuerAddress(value.implementation, 'implementation');\n const proposal = buildPolicyRegistryOperation({\n ...value,\n functionName: 'proposeApproval',\n args: [implementation],\n });\n const client = await clientFor(proposal.chainId);\n const { number: blockNumber, timestamp } = await client.getBlock({ blockTag: 'latest' });\n const policyRegistry = proposal.to!;\n await Promise.all([\n requireCode(client, policyRegistry, blockNumber),\n requireCode(client, implementation, blockNumber),\n ]);\n const req = { address: policyRegistry, abi: issuerPolicyRegistryAbi, blockNumber } as const;\n const [approved, pendingReadyAt, timelockDelay] = await Promise.all([\n client.readContract({ ...req, functionName: 'isApproved', args: [implementation] }),\n client.readContract({\n ...req,\n functionName: 'pendingApprovalReadyAt',\n args: [implementation],\n }),\n client.readContract({ ...req, functionName: 'timelockDelay' }),\n ]);\n const nextAction = approved\n ? 'approved'\n : pendingReadyAt === 0n\n ? 'propose'\n : timestamp >= pendingReadyAt\n ? 'execute'\n : 'wait';\n const nextTransaction =\n nextAction === 'propose'\n ? proposal\n : nextAction === 'execute'\n ? buildPolicyRegistryOperation({\n address: policyRegistry,\n from: proposal.from,\n chainId: proposal.chainId,\n functionName: 'executeApproval',\n args: [implementation],\n })\n : undefined;\n if (nextTransaction) await simulateTransaction(nextTransaction);\n return {\n blockNumber,\n timestamp,\n policyRegistry,\n implementation,\n approved,\n pendingReadyAt,\n timelockDelay,\n nextAction,\n nextTransaction,\n };\n }\n\n /** Simulate the deployed orchestrator's real gate: sandbox target owners or stock authorizedDeployer. */\n async function prepareRuleSet(value: IssuerRuleSetParams) {\n const tokenAddress = issuerAddress(value.token, 'token');\n const transaction = buildRuleSetOperation({\n ...value,\n functionName: 'applyRuleSet',\n args: [tokenAddress, value.rules],\n });\n const client = await clientFor(transaction.chainId);\n const token = await getToken({\n chainId: transaction.chainId,\n token: tokenAddress,\n account: transaction.from,\n });\n const orchestrator = transaction.to!;\n await requireCode(client, orchestrator, token.blockNumber);\n const req = {\n address: orchestrator,\n abi: issuerRuleSetOrchestratorAbi,\n blockNumber: token.blockNumber,\n } as const;\n const [policyEngine, authorizedDeployer] = await Promise.all([\n client.readContract({ ...req, functionName: 'policyEngine' }),\n client.readContract({ ...req, functionName: 'authorizedDeployer' }),\n ]);\n if (!sameIssuerAddress(policyEngine, token.policyEngine))\n throw new OpacityIssuerOperationError(\n 'deployment-mismatch',\n 'Orchestrator and token policy engines differ.',\n );\n const simulation = await simulateTransaction(transaction);\n return {\n transaction,\n token,\n orchestrator,\n policyEngine,\n authorizedDeployer,\n callerIsAuthorizedDeployer: sameIssuerAddress(authorizedDeployer, transaction.from),\n callerCanManagePolicies: token.canManagePolicies,\n simulation,\n };\n }\n return {\n prepareDeployment,\n simulateDeployment,\n sendDeployment,\n waitForDeployment,\n prepareVaultDeployment,\n sendVaultDeployment,\n getSandboxCapabilities,\n prepareSandboxRegistration,\n sendSandboxRegistration,\n prepareSandboxVaultDeployment,\n sendSandboxVaultDeployment,\n prepareSandboxVaultOperation,\n sendSandboxVaultOperation,\n preparePolicyApproval,\n prepareRuleSet,\n prepareAdapterDeployment,\n sendAdapterDeployment,\n simulateTransaction,\n sendTransaction,\n waitForTransaction,\n getIssuerTokens,\n getToken,\n getApprovedPolicies,\n };\n}\nexport type OpacityIssuersNamespace = ReturnType<typeof createIssuersNamespace>;\n","import { keccak256, toBytes, zeroHash } from 'viem';\nimport type { Address, Hex, PublicClient } from 'viem';\nimport { sandboxUserId } from '../documents/sandbox.js';\nimport { createIssuersNamespace } from '../issuers/index.js';\nimport { issuerRegistryAbi } from '../issuers/abi.js';\nimport {\n buildIssuerSandboxAddSelfTransaction,\n buildIssuerSandboxSetSelfTraitTransaction,\n} from '../issuers/operations.js';\nimport type { IssuerTransaction } from '../issuers/types.js';\nimport { invalid, issuerAddress, issuerChainId } from '../issuers/validation.js';\n\n/** A patch: true grants, false clears, and omitted traits remain unchanged. */\nexport interface SandboxUserTraits {\n accredited?: boolean;\n /** Two-letter country codes using the contracts' `trait.us` convention. */\n jurisdictions?: Readonly<Record<string, boolean>>;\n /** Exact document trait names or IDs. Grants eligibility, not a signature/attestation record. */\n documents?: Readonly<Record<string, boolean>>;\n /** Exact canonical trait names or nonzero bytes32 IDs; no prefix is added. */\n custom?: Readonly<Record<string, boolean>>;\n}\n\nexport interface SandboxUserTrait {\n traitId: Hex;\n enabled: boolean;\n label: string;\n}\n\nexport interface PrepareSandboxUserParams {\n registryAddress: Address;\n chainId: number;\n /** This wallet must send every step and pay gas. Traits affect its entire linked identity. */\n wallet: Address;\n traits?: SandboxUserTraits;\n}\n\nexport type SandboxUserStep =\n | { kind: 'onboard'; label: string; transaction: IssuerTransaction }\n | {\n kind: 'set-trait';\n label: string;\n transaction: IssuerTransaction;\n trait: SandboxUserTrait;\n };\n\nexport type SandboxUserBlocker =\n 'unsupported-sandbox-version' | 'registry-paused' | 'terminal-identity';\n\nexport interface PreparedSandboxUser {\n wallet: Address;\n /** Existing on-chain identity, or the ID sandboxAddSelf will bind on first onboarding. */\n userId: Hex;\n registryAddress: Address;\n chainId: number;\n blockNumber: bigint;\n traits: SandboxUserTrait[];\n /** Send in order, waiting for confirmation after each step. Empty whenever blocked. */\n steps: SandboxUserStep[];\n blockers: SandboxUserBlocker[];\n /** No blockers; also true when the requested state already matches and steps is empty. */\n ready: boolean;\n}\n\nfunction record(value: unknown, label: string, keys?: readonly string[]): Record<string, unknown> {\n if (\n value === null ||\n typeof value !== 'object' ||\n (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)\n )\n invalid(`${label} must be a plain object.`);\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || (keys !== undefined && !keys.includes(key)))\n invalid(`${label} contains an unknown field: ${String(key)}.`);\n const descriptor = Object.getOwnPropertyDescriptor(value, key)!;\n if (!descriptor.enumerable || !('value' in descriptor))\n invalid(`${label}.${key} must be an enumerable data property.`);\n }\n return value as Record<string, unknown>;\n}\n\n/** Hashes an exact canonical name, or validates an existing nonzero bytes32 trait ID. */\nexport function sandboxTraitId(nameOrId: string): Hex {\n if (typeof nameOrId !== 'string' || !nameOrId || /[\\s\\p{C}]/u.test(nameOrId))\n invalid('Trait names must be nonempty strings without whitespace or control characters.');\n if (/^0x/i.test(nameOrId)) {\n if (!/^0x[0-9a-f]{64}$/i.test(nameOrId) || nameOrId.toLowerCase() === zeroHash)\n invalid('Trait IDs must be nonzero bytes32 hex values.');\n return nameOrId.toLowerCase() as Hex;\n }\n return keccak256(toBytes(nameOrId));\n}\n\n/**\n * `US` / `us` -> keccak256(\"trait.us\"), matching the contracts' country-trait examples.\n * Validates two-letter shape, not membership in a country registry. Use custom traits for regions.\n */\nexport function sandboxJurisdictionTraitId(code: string): Hex {\n if (typeof code !== 'string' || !/^[a-z]{2}$/i.test(code.trim()))\n invalid('Jurisdiction codes must contain exactly two letters, for example US or GB.');\n return sandboxTraitId(`trait.${code.trim().toLowerCase()}`);\n}\n\n/** Resolves and validates the whole patch before any RPC or wallet interaction. */\nexport function resolveSandboxUserTraits(traits: SandboxUserTraits = {}): SandboxUserTrait[] {\n const input = record(traits, 'traits', ['accredited', 'jurisdictions', 'documents', 'custom']);\n const resolved = new Map<Hex, SandboxUserTrait>();\n function add(traitId: Hex, enabled: unknown, label: string): void {\n if (typeof enabled !== 'boolean') invalid(`${label} must be a boolean.`);\n const previous = resolved.get(traitId);\n if (previous !== undefined && previous.enabled !== enabled)\n invalid(`Conflicting values for trait ${traitId} (${previous.label} and ${label}).`);\n if (previous === undefined) resolved.set(traitId, { traitId, enabled, label });\n }\n if (input.accredited !== undefined)\n add(sandboxTraitId('trait.accredited'), input.accredited, 'Accredited investor');\n for (const group of ['jurisdictions', 'documents', 'custom'] as const) {\n if (input[group] === undefined) continue;\n for (const [key, enabled] of Object.entries(record(input[group], `traits.${group}`))) {\n const traitId =\n group === 'jurisdictions' ? sandboxJurisdictionTraitId(key) : sandboxTraitId(key);\n const label =\n group === 'jurisdictions'\n ? `Jurisdiction ${key.trim().toUpperCase()}`\n : group === 'documents'\n ? `Document ${key}`\n : key;\n add(traitId, enabled, label);\n }\n }\n return [...resolved.values()];\n}\n\n/**\n * Plans sandbox self-onboarding and global trait changes from one live block. Never sends.\n *\n * Uses only sandboxAddSelf and sandboxSetSelfTrait from the existing contracts. Existing IDs and\n * unspecified traits are preserved. All linked wallets share trait changes. A document trait does\n * not create DocumentAttested history, and jurisdiction traits do not represent a separate field.\n * The snapshot can change before submission; simulate each step and confirm it before the next.\n */\nexport async function prepareSandboxUser(\n publicClient: PublicClient,\n params: PrepareSandboxUserParams,\n): Promise<PreparedSandboxUser> {\n record(params, 'params', ['registryAddress', 'chainId', 'wallet', 'traits']);\n // Capture every caller-controlled value before the first await.\n const registryAddress = issuerAddress(params.registryAddress, 'registryAddress');\n const chainId = issuerChainId(params.chainId);\n const wallet = issuerAddress(params.wallet, 'wallet');\n const traits = resolveSandboxUserTraits(params.traits);\n const context = { address: registryAddress, chainId, from: wallet };\n const capabilities = await createIssuersNamespace({\n publicClient,\n chainId,\n }).getSandboxCapabilities(context);\n const userId = capabilities.userId === zeroHash ? sandboxUserId(wallet) : capabilities.userId;\n const blockers: SandboxUserBlocker[] = [];\n if (\n !capabilities.supportsSelfOnboarding ||\n (traits.length > 0 && !capabilities.supportsSelfTraits)\n )\n blockers.push('unsupported-sandbox-version');\n if (capabilities.paused) blockers.push('registry-paused');\n if (capabilities.entryStatus === 2 || capabilities.entryStatus === 4)\n blockers.push('terminal-identity');\n const prepared: PreparedSandboxUser = {\n wallet,\n userId,\n registryAddress,\n chainId,\n blockNumber: capabilities.blockNumber,\n traits,\n steps: [],\n blockers,\n ready: blockers.length === 0,\n };\n if (!prepared.ready) return prepared;\n\n // hasGlobalTrait returns the stored boolean, independent of the wallet's KYC expiry/status.\n // Even a predicted identity may already have traits written through a privileged path.\n const current = await Promise.all(\n traits.map(({ traitId }) =>\n publicClient.readContract({\n address: registryAddress,\n abi: issuerRegistryAbi,\n functionName: 'hasGlobalTrait',\n args: [userId, traitId],\n blockNumber: capabilities.blockNumber,\n }),\n ),\n );\n if (!capabilities.allowed || capabilities.userId === zeroHash)\n prepared.steps.push({\n kind: 'onboard',\n label: capabilities.userId === zeroHash ? 'Onboard sandbox user' : 'Renew sandbox onboarding',\n transaction: buildIssuerSandboxAddSelfTransaction(context),\n });\n traits.forEach((trait, index) => {\n if (trait.enabled === current[index]) return;\n prepared.steps.push({\n kind: 'set-trait',\n label: `${trait.enabled ? 'Enable' : 'Clear'} ${trait.label}`,\n trait,\n transaction: buildIssuerSandboxSetSelfTraitTransaction({ ...context, ...trait }),\n });\n });\n return prepared;\n}\n","import { createWalletClient, defineChain } from 'viem';\nimport type { Address, Hash, Hex, PublicClient, Transport, WalletClient } from 'viem';\nimport { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';\nimport { createIssuersNamespace } from '../issuers/index.js';\nimport type {\n IssuerReceiptResult,\n IssuerTransaction,\n IssuerWaitOptions,\n SubmittedIssuerTransaction,\n} from '../issuers/types.js';\nimport {\n invalid,\n issuerAddress,\n issuerBytes,\n issuerChainId,\n issuerUint,\n sameIssuerAddress,\n} from '../issuers/validation.js';\nimport { prepareSandboxUser, resolveSandboxUserTraits } from './users.js';\nimport type { PreparedSandboxUser, SandboxUserTrait, SandboxUserTraits } from './users.js';\n\nexport interface SandboxUserFundingTransaction {\n from: Address;\n to: Address;\n chainId: number;\n data: '0x';\n value: bigint;\n}\nexport interface SubmittedSandboxUserFunding {\n kind: 'funding';\n hash: Hash;\n transaction: SandboxUserFundingTransaction;\n}\n\n/** Contains a signing key. Store privately, with bigint-safe serialization; never log or index it. */\nexport interface SandboxUserCreationProgress {\n wallet: Address;\n userId: Hex;\n privateKey: Hex;\n chainId: number;\n registryAddress: Address;\n traits: SandboxUserTrait[];\n stage:\n | 'created'\n | 'sending-funding'\n | 'waiting-funding'\n | 'applying'\n | 'sending-user'\n | 'waiting-user'\n | 'complete';\n submissions: SubmittedIssuerTransaction[];\n funding?: SubmittedSandboxUserFunding;\n /** A missing hash after a send error still requires sender/nonce reconciliation before retry. */\n pending?: {\n kind: 'funding' | 'user';\n transaction: SandboxUserFundingTransaction | IssuerTransaction;\n hash?: Hash;\n result?: IssuerReceiptResult;\n };\n}\n\nexport interface CreateSandboxUserParams {\n registryAddress: Address;\n chainId: number;\n /** Explicit write-capable RPC transport. The publicClient is used only for reads. */\n transport: Transport;\n traits?: SandboxUserTraits;\n /** Reuse an application-owned test account; omit to generate a new random account. */\n privateKey?: Hex;\n /** One explicit native-token transfer, in wei. Omit for an already-funded account. */\n funding?: { walletClient: WalletClient; amount: bigint };\n /** Saves credentials before any send, then transaction progress. Must store privately. */\n persist: (progress: SandboxUserCreationProgress) => Promise<void>;\n wait?: IssuerWaitOptions;\n}\n\n/** The recoverable account and pending transaction survive persistence, send and receipt errors. */\nexport class SandboxUserCreationError extends Error {\n constructor(\n readonly progress: SandboxUserCreationProgress,\n cause: unknown,\n ) {\n super(\n 'Sandbox user creation stopped. Save the progress and reconcile any pending transaction before retrying.',\n { cause },\n );\n this.name = 'SandboxUserCreationError';\n // Recovery credentials remain explicitly accessible without appearing in routine error logs.\n Object.defineProperty(this, 'progress', { enumerable: false });\n }\n}\n\nfunction plain(value: unknown, label: string, keys: readonly string[]): void {\n if (\n value === null ||\n typeof value !== 'object' ||\n (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)\n )\n invalid(`${label} must be a plain object.`);\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || !keys.includes(key))\n invalid(`${label} contains an unknown field.`);\n const descriptor = Object.getOwnPropertyDescriptor(value, key)!;\n if (!descriptor.enumerable || !Object.hasOwn(descriptor, 'value'))\n invalid(`${label} must contain enumerable data properties.`);\n }\n}\n\nfunction waitOptions(value: IssuerWaitOptions | undefined): IssuerWaitOptions {\n if (value === undefined) return {};\n plain(value, 'wait', ['confirmations', 'timeout', 'pollingInterval']);\n const result = { ...value };\n for (const key of ['confirmations', 'timeout', 'pollingInterval'] as const) {\n const n = result[key];\n if (n !== undefined && (!Number.isSafeInteger(n) || n <= 0))\n invalid(`wait.${key} must be a positive safe integer.`);\n }\n return result;\n}\n\nasync function checkChain(publicClient: PublicClient, chainId: number): Promise<void> {\n if (\n (publicClient.chain !== undefined && publicClient.chain.id !== chainId) ||\n (await publicClient.getChainId()) !== chainId\n )\n invalid('RPC chain must match the sandbox user chain.');\n}\n\nasync function walletAddress(wallet: WalletClient, chainId: number): Promise<Address> {\n if (\n (wallet.chain !== undefined && wallet.chain.id !== chainId) ||\n (await wallet.getChainId()) !== chainId\n )\n invalid('Wallet chain must match the sandbox user chain.');\n const selected =\n wallet.account?.type === 'local' ? wallet.account.address : (await wallet.getAddresses())[0];\n if (\n !selected ||\n (wallet.account !== undefined && !sameIssuerAddress(wallet.account.address, selected))\n )\n invalid('Selected funding wallet differs from its configured account.');\n return issuerAddress(selected, 'funding wallet');\n}\n\n/** Reconcile a saved native funding transfer without resending it. */\nexport async function waitForSandboxUserFunding(\n publicClient: PublicClient,\n submission: SubmittedSandboxUserFunding,\n wait?: IssuerWaitOptions,\n): Promise<IssuerReceiptResult> {\n plain(submission, 'funding submission', ['kind', 'hash', 'transaction']);\n if (submission.kind !== 'funding') invalid('Expected a funding submission.');\n const input = submission.transaction;\n plain(input, 'funding transaction', ['from', 'to', 'chainId', 'data', 'value']);\n const tx = {\n from: issuerAddress(input.from, 'from'),\n to: issuerAddress(input.to, 'to'),\n chainId: issuerChainId(input.chainId),\n value: issuerUint(input.value, 'value'),\n data: input.data,\n };\n if (tx.value === 0n || tx.data !== '0x')\n invalid('Funding must be a positive native transfer with empty data.');\n const hash = issuerBytes(submission.hash, 'hash', 32);\n const options = waitOptions(wait);\n await checkChain(publicClient, tx.chainId);\n let replacementReason: IssuerReceiptResult['replacementReason'];\n const receipt = structuredClone(\n await publicClient.waitForTransactionReceipt({\n hash,\n ...options,\n onReplaced: ({ reason }) => {\n replacementReason = reason;\n },\n }),\n );\n const base = { submittedHash: hash, hash: receipt.transactionHash, receipt };\n if (replacementReason || receipt.transactionHash.toLowerCase() !== hash.toLowerCase())\n return {\n ...base,\n status: 'replaced',\n ...(replacementReason === undefined ? {} : { replacementReason }),\n };\n if (receipt.status === 'reverted') return { ...base, status: 'reverted' };\n let actual;\n try {\n actual = await publicClient.getTransaction({ hash });\n } catch {\n return { ...base, status: 'unverified' };\n }\n const verified =\n actual.hash.toLowerCase() === hash.toLowerCase() &&\n sameIssuerAddress(actual.from, tx.from) &&\n actual.to !== null &&\n sameIssuerAddress(actual.to, tx.to) &&\n actual.input === '0x' &&\n actual.value === tx.value &&\n (actual.chainId === undefined || actual.chainId === tx.chainId);\n return { ...base, status: verified ? 'confirmed' : 'unverified' };\n}\n\nfunction sameTransaction(a: IssuerTransaction, b: IssuerTransaction): boolean {\n return (\n a.chainId === b.chainId &&\n sameIssuerAddress(a.from, b.from) &&\n a.to?.toLowerCase() === b.to?.toLowerCase() &&\n a.data.toLowerCase() === b.data.toLowerCase() &&\n a.value === b.value\n );\n}\n\nconst active = new Set<string>();\n\n/**\n * Creates a separate random sandbox account, optionally funds it, and applies its trait patch.\n * Every registry write is signed by the test account; the connected sponsor only sends funding.\n * Saves credentials before writes and stops on uncertain outcomes; never retries a send.\n * The caller must reconcile saved pending work before calling again with the saved privateKey.\n */\nexport async function createSandboxUser(\n publicClient: PublicClient,\n params: CreateSandboxUserParams,\n): Promise<SandboxUserCreationProgress> {\n plain(params, 'params', [\n 'registryAddress',\n 'chainId',\n 'transport',\n 'traits',\n 'privateKey',\n 'funding',\n 'persist',\n 'wait',\n ]);\n const registryAddress = issuerAddress(params.registryAddress, 'registryAddress');\n const chainId = issuerChainId(params.chainId);\n if (typeof params.transport !== 'function') invalid('transport must be a viem write transport.');\n if (typeof params.persist !== 'function')\n invalid('persist must save sandbox credentials and transaction progress.');\n const transport = params.transport;\n const persist = params.persist;\n const traits = resolveSandboxUserTraits(params.traits);\n const patch = {\n custom: Object.fromEntries(traits.map(({ traitId, enabled }) => [traitId, enabled])),\n };\n const wait = waitOptions(params.wait);\n let funding: CreateSandboxUserParams['funding'];\n if (params.funding !== undefined) {\n plain(params.funding, 'funding', ['walletClient', 'amount']);\n if (\n !params.funding.walletClient ||\n typeof params.funding.walletClient.sendTransaction !== 'function'\n )\n invalid('funding.walletClient must be a viem wallet client.');\n const amount = issuerUint(params.funding.amount, 'funding.amount');\n if (amount === 0n) invalid('funding.amount must be positive.');\n funding = { walletClient: params.funding.walletClient, amount };\n }\n const privateKey =\n params.privateKey === undefined\n ? generatePrivateKey()\n : issuerBytes(params.privateKey, 'privateKey', 32);\n let account: ReturnType<typeof privateKeyToAccount>;\n try {\n account = privateKeyToAccount(privateKey);\n } catch {\n invalid('privateKey must be a valid secp256k1 private key.');\n }\n const chain = defineChain({\n id: chainId,\n name: `Sandbox ${chainId}`,\n nativeCurrency: { name: 'Native', symbol: 'NATIVE', decimals: 18 },\n rpcUrls: { default: { http: [] } },\n });\n const walletClient = createWalletClient({ account, chain, transport });\n const issuers = createIssuersNamespace({ publicClient, walletClient, chainId });\n const key = `${chainId}:${account.address.toLowerCase()}`;\n if (active.has(key)) invalid('Creation is already running for this sandbox account.');\n active.add(key);\n let progress: SandboxUserCreationProgress | undefined;\n try {\n const plan = await prepareSandboxUser(publicClient, {\n registryAddress,\n chainId,\n wallet: account.address,\n traits: patch,\n });\n progress = {\n wallet: account.address,\n userId: plan.userId,\n privateKey,\n chainId,\n registryAddress,\n traits,\n stage: 'created',\n submissions: [],\n };\n const state = progress;\n const save = () => persist(structuredClone(state));\n await save();\n if (!plan.ready) throw new Error(`Sandbox user is blocked: ${plan.blockers.join(', ')}.`);\n await walletAddress(walletClient, chainId);\n async function refresh(remaining: PreparedSandboxUser['steps']) {\n const fresh = await prepareSandboxUser(publicClient, {\n registryAddress,\n chainId,\n wallet: account.address,\n traits: patch,\n });\n if (\n !fresh.ready ||\n fresh.userId.toLowerCase() !== state.userId.toLowerCase() ||\n fresh.steps.some(\n (step) =>\n !remaining.some((reviewed) => sameTransaction(step.transaction, reviewed.transaction)),\n )\n )\n throw new Error(\n 'Sandbox user state changed. Reconcile completed transactions and prepare again.',\n );\n return fresh;\n }\n if (funding !== undefined) {\n const sponsor = funding.walletClient;\n const from = await walletAddress(sponsor, chainId);\n if (sameIssuerAddress(from, account.address))\n invalid('Funding sponsor must be separate from the test account.');\n await refresh(plan.steps);\n const transaction: SandboxUserFundingTransaction = {\n from,\n to: account.address,\n chainId,\n data: '0x',\n value: funding.amount,\n };\n state.pending = { kind: 'funding', transaction };\n state.stage = 'sending-funding';\n await save();\n // Persistence may yield for arbitrarily long; validate the intended identity again.\n await refresh(plan.steps);\n await walletAddress(walletClient, chainId);\n const code = await publicClient.getBytecode({ address: account.address });\n if (code && code !== '0x') invalid('Funding recipient must have no contract code.');\n await checkChain(publicClient, chainId);\n if (!sameIssuerAddress(await walletAddress(sponsor, chainId), from))\n invalid('Selected funding account changed before sending.');\n const hash = await sponsor.sendTransaction({\n account: sponsor.account ?? from,\n chain: sponsor.chain ?? chain,\n to: account.address,\n value: transaction.value,\n data: '0x',\n });\n state.funding = { kind: 'funding', hash, transaction };\n state.pending.hash = hash;\n state.stage = 'waiting-funding';\n await save();\n const result = await waitForSandboxUserFunding(publicClient, state.funding, wait);\n state.pending.result = result;\n if (result.status !== 'confirmed') throw new Error(`Funding transaction ${result.status}.`);\n delete state.pending;\n state.stage = 'applying';\n await save();\n }\n for (const [index, step] of plan.steps.entries()) {\n const fresh = await refresh(plan.steps.slice(index));\n if (!fresh.steps.some((next) => sameTransaction(next.transaction, step.transaction)))\n continue;\n state.pending = { kind: 'user', transaction: step.transaction };\n state.stage = 'sending-user';\n await save();\n const current = await refresh(plan.steps.slice(index));\n if (!current.steps.some((next) => sameTransaction(next.transaction, step.transaction))) {\n delete state.pending;\n state.stage = 'applying';\n await save();\n continue;\n }\n const submission = await issuers.sendTransaction(step.transaction);\n state.submissions.push(submission);\n state.pending.hash = submission.hash;\n state.stage = 'waiting-user';\n await save();\n const result = await issuers.waitForTransaction(submission, wait);\n state.pending.result = result;\n if (result.status !== 'confirmed')\n throw new Error(`Sandbox user transaction ${result.status}.`);\n delete state.pending;\n state.stage = 'applying';\n await save();\n }\n await refresh([]);\n state.stage = 'complete';\n await save();\n return structuredClone(state);\n } catch (cause) {\n if (progress !== undefined)\n throw new SandboxUserCreationError(structuredClone(progress), cause);\n throw cause;\n } finally {\n active.delete(key);\n }\n}\n","import { OpacityIssuerOperationError } from '../issuers/validation.js';\nimport type { SandboxUserCreationProgress } from './create-user.js';\nimport {\n createWalletClient,\n isAddress,\n zeroAddress,\n type Chain,\n type PrivateKeyAccount,\n type Transport,\n type WalletClient,\n} from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\n\nexport interface RestoreSandboxUserWalletOptions<chain extends Chain = Chain> {\n /** Must match the saved user's chain. */\n chain: chain;\n /** Explicit write-capable RPC transport for transactions signed by the saved user. */\n transport: Transport;\n}\n\nfunction invalid(message: string): never {\n throw new OpacityIssuerOperationError('invalid-input', message);\n}\n\n/**\n * Restores a completed sandbox user's local signing wallet without making an RPC request.\n * Does not fund, onboard, or change the caller's connected wallet. The saved key stays local.\n * Reconcile pending creation transactions and resume creation before restoring an incomplete user.\n */\nexport function restoreSandboxUserWallet<chain extends Chain>(\n progress: SandboxUserCreationProgress,\n options: RestoreSandboxUserWalletOptions<chain>,\n): WalletClient<Transport, chain, PrivateKeyAccount> {\n if (\n !progress ||\n typeof progress !== 'object' ||\n (Object.getPrototypeOf(progress) !== Object.prototype &&\n Object.getPrototypeOf(progress) !== null)\n )\n invalid('Saved sandbox user must be a plain progress object.');\n for (const key of Reflect.ownKeys(progress)) {\n const descriptor = Object.getOwnPropertyDescriptor(progress, key)!;\n if (!Object.hasOwn(descriptor, 'value'))\n invalid('Saved sandbox user must contain data properties.');\n }\n if (!Number.isSafeInteger(progress.chainId) || progress.chainId <= 0)\n invalid('Saved sandbox user chainId must be a positive safe integer.');\n for (const field of ['wallet', 'registryAddress'] as const) {\n const value = progress[field];\n if (\n typeof value !== 'string' ||\n !isAddress(value, { strict: false }) ||\n value.toLowerCase() === zeroAddress\n )\n invalid(`Saved sandbox user ${field} must be a nonzero address.`);\n }\n if (typeof progress.userId !== 'string' || !/^0x[0-9a-fA-F]{64}$/.test(progress.userId))\n invalid('Saved sandbox user userId must be bytes32.');\n if (typeof progress.privateKey !== 'string' || !/^0x[0-9a-fA-F]{64}$/.test(progress.privateKey))\n invalid('Saved sandbox user privateKey must be a 32-byte hex private key.');\n let account: PrivateKeyAccount;\n try {\n account = privateKeyToAccount(progress.privateKey);\n } catch {\n // viem errors can contain their input. Do not attach a cause containing the signing key.\n invalid('Saved sandbox user privateKey must be a valid secp256k1 private key.');\n }\n if (account.address.toLowerCase() !== progress.wallet.toLowerCase())\n invalid('Saved sandbox user wallet must match its private key.');\n if (progress.pending !== undefined || progress.stage !== 'complete')\n invalid(\n 'Reconcile pending transactions and resume sandbox user creation before new wallet operations.',\n );\n if (\n !options ||\n !options.chain ||\n !Number.isSafeInteger(options.chain.id) ||\n options.chain.id <= 0 ||\n options.chain.id !== progress.chainId\n )\n invalid('Wallet chain must match the saved sandbox user chain.');\n if (typeof options.transport !== 'function')\n invalid('Restoring a sandbox user wallet requires an explicit transport.');\n\n return createWalletClient({ account, chain: options.chain, transport: options.transport });\n}\n","import type { Address, Chain, Hash, Hex, PublicClient, Transport, WalletClient } from 'viem';\nimport type { IssuerReceiptResult, IssuerWaitOptions } from '../issuers/types.js';\nimport {\n invalid,\n issuerAddress,\n issuerChainId,\n issuerUint,\n sameIssuerAddress,\n} from '../issuers/validation.js';\nimport { createTransfersNamespace } from '../transfers/index.js';\nimport type {\n PreparedTransfer,\n TransferDeployment,\n SubmittedTransfer,\n} from '../transfers/index.js';\nimport {\n waitForSandboxUserFunding,\n type SandboxUserCreationProgress,\n type SandboxUserFundingTransaction,\n type SubmittedSandboxUserFunding,\n} from './create-user.js';\nimport { restoreSandboxUserWallet } from './wallet.js';\n\ntype TransferResult = Awaited<\n ReturnType<ReturnType<typeof createTransfersNamespace>['waitForTransfer']>\n>;\n\n/** Public transaction journal. It deliberately contains no private key or signing account. */\nexport interface SandboxTransferProgress {\n wallet: Address;\n userId: Hex;\n chainId: number;\n registryAddress: Address;\n stage:\n | 'prepared'\n | 'sending-funding'\n | 'waiting-funding'\n | 'sending-transfer'\n | 'waiting-transfer'\n | 'complete';\n prepared: PreparedTransfer;\n funding?: SubmittedSandboxUserFunding;\n fundingResult?: IssuerReceiptResult;\n submission?: SubmittedTransfer;\n result?: TransferResult;\n /** A send error without a hash is still uncertain: reconcile the sender/nonce before retrying. */\n pending?:\n | {\n kind: 'funding';\n transaction: SandboxUserFundingTransaction;\n hash?: Hash;\n result?: IssuerReceiptResult;\n }\n | {\n kind: 'transfer';\n transaction: PreparedTransfer['transaction'];\n hash?: Hash;\n result?: TransferResult;\n };\n}\n\nexport interface TransferSandboxUserParams {\n user: SandboxUserCreationProgress;\n chain: Chain;\n /** Explicit RPC transport for transactions signed locally by the saved user. */\n transport: Transport;\n transfer: { deployment: TransferDeployment; recipient: Address; amount: bigint };\n /** One exact, positive native-token transfer. Omit when the selected user already has gas. */\n funding?: { walletClient: WalletClient; amount: bigint };\n /** Save intent before sending, then hashes and verified outcomes. Use bigint-safe serialization. */\n persist: (progress: SandboxTransferProgress) => Promise<void>;\n wait?: IssuerWaitOptions;\n}\n\nexport class SandboxTransferError extends Error {\n readonly progress: SandboxTransferProgress;\n\n constructor(progress: SandboxTransferProgress, cause: unknown) {\n super(\n 'Sandbox transfer stopped. Save the progress and reconcile any pending transaction before retrying.',\n { cause },\n );\n this.name = 'SandboxTransferError';\n this.progress = structuredClone(progress);\n }\n}\n\nfunction plain(value: unknown, label: string, keys: readonly string[]): void {\n if (\n value === null ||\n typeof value !== 'object' ||\n (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)\n )\n invalid(`${label} must be a plain object.`);\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || !keys.includes(key))\n invalid(`${label} contains an unknown field.`);\n const descriptor = Object.getOwnPropertyDescriptor(value, key)!;\n if (!descriptor.enumerable || !Object.hasOwn(descriptor, 'value'))\n invalid(`${label} must contain enumerable data properties.`);\n }\n}\n\nfunction waitOptions(value: IssuerWaitOptions | undefined): IssuerWaitOptions {\n if (value === undefined) return {};\n plain(value, 'wait', ['confirmations', 'timeout', 'pollingInterval']);\n const result = { ...value };\n for (const key of ['confirmations', 'timeout', 'pollingInterval'] as const) {\n const n = result[key];\n if (n !== undefined && (!Number.isSafeInteger(n) || n <= 0))\n invalid(`wait.${key} must be a positive safe integer.`);\n }\n return Object.freeze(result);\n}\n\n// viem chain definitions contain formatter functions, so structuredClone cannot copy them.\n// Copy data recursively, preserving functions, before an awaited callback can mutate the input.\nfunction snapshot<T>(value: T, seen = new WeakMap<object, object>()): T {\n if (value === null || typeof value !== 'object') return value;\n if (seen.has(value)) return seen.get(value) as T;\n const result: Record<PropertyKey, unknown> | unknown[] = Array.isArray(value) ? [] : {};\n seen.set(value, result);\n for (const key of Reflect.ownKeys(value)) {\n if (Array.isArray(value) && key === 'length') continue;\n const descriptor = Object.getOwnPropertyDescriptor(value, key)!;\n if (!Object.hasOwn(descriptor, 'value')) invalid('chain must contain data properties.');\n Object.defineProperty(result, key, {\n value: snapshot(descriptor.value, seen),\n enumerable: descriptor.enumerable ?? false,\n configurable: true,\n writable: true,\n });\n }\n return Object.freeze(result) as T;\n}\n\nasync function checkChain(client: PublicClient | WalletClient, chainId: number): Promise<void> {\n if (\n (client.chain !== undefined && client.chain.id !== chainId) ||\n (await client.getChainId()) !== chainId\n )\n invalid('RPC and wallet chains must match the sandbox user chain.');\n}\n\nasync function fundingAccount(wallet: WalletClient, chainId: number): Promise<Address> {\n await checkChain(wallet, chainId);\n const selected =\n wallet.account?.type === 'local' ? wallet.account.address : (await wallet.getAddresses())[0];\n if (\n !selected ||\n (wallet.account !== undefined && !sameIssuerAddress(wallet.account.address, selected))\n )\n invalid('Selected funding wallet differs from its configured account.');\n return issuerAddress(selected, 'funding wallet');\n}\n\nconst active = new Set<string>();\n\n/**\n * Sends one policy-checked asset transfer from a completed, locally saved sandbox user.\n * With existing gas no connected-wallet prompt is needed. Optional explicit funding requires\n * one sponsor transaction, followed by one transfer signed automatically by the saved user.\n * No failed/uncertain send is retried and no gas top-up is repeated. Reconcile journaled pending\n * work with waitForSandboxUserFunding / transfers.waitForTransfer before starting another action.\n */\nexport async function transferSandboxUser(\n publicClient: PublicClient,\n params: TransferSandboxUserParams,\n): Promise<SandboxTransferProgress> {\n plain(params, 'params', ['user', 'chain', 'transport', 'transfer', 'funding', 'persist', 'wait']);\n if (typeof params.persist !== 'function') invalid('persist must save transfer progress.');\n const persist = params.persist;\n const wait = waitOptions(params.wait);\n const chain = snapshot(params.chain);\n const walletClient = restoreSandboxUserWallet(params.user, {\n chain,\n transport: params.transport,\n });\n const wallet = issuerAddress(params.user.wallet, 'user.wallet');\n const userId = params.user.userId;\n const registryAddress = issuerAddress(params.user.registryAddress, 'user.registryAddress');\n const chainId = issuerChainId(params.user.chainId);\n plain(params.transfer, 'transfer', ['deployment', 'recipient', 'amount']);\n plain(params.transfer.deployment, 'deployment', [\n 'chainId',\n 'token',\n 'tokenId',\n 'allowlistRegistry',\n ]);\n const deployment = params.transfer.deployment;\n if (issuerChainId(deployment.chainId) !== chainId)\n invalid('Transfer deployment chain must match the saved sandbox user chain.');\n if (\n deployment.allowlistRegistry !== undefined &&\n !sameIssuerAddress(\n issuerAddress(deployment.allowlistRegistry, 'allowlistRegistry'),\n registryAddress,\n )\n )\n invalid('Transfer deployment registry must match the saved sandbox user registry.');\n const amount = issuerUint(params.transfer.amount, 'amount');\n if (amount === 0n) invalid('Transfer amount must be positive.');\n const transfer = Object.freeze({\n deployment: Object.freeze({\n chainId,\n token: issuerAddress(deployment.token, 'token'),\n tokenId: issuerUint(deployment.tokenId, 'tokenId'),\n // Always pin the actual token registry, including when callers omit this optional assertion.\n allowlistRegistry: registryAddress,\n }),\n sender: wallet,\n recipient: issuerAddress(params.transfer.recipient, 'recipient'),\n amount,\n });\n let funding: TransferSandboxUserParams['funding'];\n if (params.funding !== undefined) {\n plain(params.funding, 'funding', ['walletClient', 'amount']);\n if (\n !params.funding.walletClient ||\n typeof params.funding.walletClient.sendTransaction !== 'function'\n )\n invalid('funding.walletClient must be a viem wallet client.');\n const amount = issuerUint(params.funding.amount, 'funding.amount');\n if (amount === 0n) invalid('funding.amount must be positive.');\n funding = { walletClient: params.funding.walletClient, amount };\n }\n const transfers = createTransfersNamespace({ publicClient, walletClient, chainId });\n const key = `${chainId}:${wallet.toLowerCase()}`;\n if (active.has(key)) invalid('A transfer is already running for this sandbox account.');\n active.add(key);\n let progress: SandboxTransferProgress | undefined;\n try {\n const prepared = structuredClone(await transfers.prepareTransfer(transfer));\n progress = { wallet, userId, chainId, registryAddress, stage: 'prepared', prepared };\n const state = progress;\n const save = () => persist(structuredClone(state));\n function assertReady(plan: PreparedTransfer, availableFunding = 0n): void {\n if (\n !sameIssuerAddress(plan.allowlistRegistry, registryAddress) ||\n plan.blockers.some((blocker) => blocker !== 'insufficient-gas') ||\n (!plan.ready && (!plan.gas || availableFunding < plan.gas.shortfall))\n )\n throw new Error(\n `Sandbox transfer is blocked: ${plan.blockers.join(', ') || 'registry mismatch'}.`,\n );\n }\n async function refresh(availableFunding = 0n): Promise<void> {\n const plan = structuredClone(await transfers.prepareTransfer(transfer));\n state.prepared = plan;\n assertReady(plan, availableFunding);\n }\n await save();\n assertReady(prepared, funding?.amount);\n if (funding !== undefined) {\n const sponsor = funding.walletClient;\n const from = await fundingAccount(sponsor, chainId);\n const sendAccount = sponsor.account?.type === 'local' ? snapshot(sponsor.account) : from;\n if (typeof sendAccount !== 'string' && !sameIssuerAddress(sendAccount.address, from))\n invalid('Selected funding account changed before preparation.');\n if (sameIssuerAddress(from, wallet))\n invalid('Funding sponsor must be separate from the test account.');\n const transaction: SandboxUserFundingTransaction = {\n from,\n to: wallet,\n chainId,\n data: '0x',\n value: funding.amount,\n };\n state.pending = { kind: 'funding', transaction: structuredClone(transaction) };\n state.stage = 'sending-funding';\n await save();\n // Both policies and wallet selection may change while the application persists the intent.\n await refresh(funding.amount);\n await checkChain(walletClient, chainId);\n const code = await publicClient.getBytecode({ address: wallet });\n if (code && code !== '0x') invalid('Funding recipient must have no contract code.');\n await checkChain(publicClient, chainId);\n if (!sameIssuerAddress(await fundingAccount(sponsor, chainId), from))\n invalid('Selected funding account changed before sending.');\n const hash = await sponsor.sendTransaction({\n account: sendAccount,\n chain,\n to: wallet,\n value: transaction.value,\n data: '0x',\n });\n state.funding = { kind: 'funding', hash, transaction: structuredClone(transaction) };\n state.pending.hash = hash;\n state.stage = 'waiting-funding';\n await save();\n const result = structuredClone(\n await waitForSandboxUserFunding(publicClient, state.funding, wait),\n );\n state.pending.result = result;\n state.fundingResult = structuredClone(result);\n if (result.status !== 'confirmed') {\n await save();\n throw new Error(`Funding transaction ${result.status}.`);\n }\n delete state.pending;\n state.stage = 'prepared';\n await save();\n }\n await refresh();\n state.pending = { kind: 'transfer', transaction: structuredClone(state.prepared.transaction) };\n state.stage = 'sending-transfer';\n await save();\n // sendTransfer freshly checks policies, chain, selected signer, and gas before its sole send.\n const submission = structuredClone(await transfers.sendTransfer(transfer));\n state.submission = submission;\n state.pending.hash = submission.hash;\n state.stage = 'waiting-transfer';\n await save();\n const result = structuredClone(await transfers.waitForTransfer(submission, wait));\n state.pending.result = result;\n state.result = structuredClone(result);\n if (result.status !== 'confirmed') {\n await save();\n throw new Error(`Sandbox transfer ${result.status}.`);\n }\n delete state.pending;\n state.stage = 'complete';\n await save();\n return structuredClone(state);\n } catch (cause) {\n if (progress !== undefined) throw new SandboxTransferError(progress, cause);\n throw cause;\n } finally {\n active.delete(key);\n }\n}\n"]}
|