@nevermined-io/core-kit 0.4.5 → 0.5.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/dist/Instantiable.abstract.js +15 -13
- package/dist/Instantiable.abstract.js.map +1 -0
- package/dist/artifacts/generated.d.ts +174 -40
- package/dist/artifacts/generated.d.ts.map +1 -1
- package/dist/artifacts/generated.js +22805 -7111
- package/dist/artifacts/generated.js.map +1 -0
- package/dist/contracts/AccessManager.js +12 -3
- package/dist/contracts/AccessManager.js.map +1 -0
- package/dist/contracts/AssetRegistry.d.ts +1 -0
- package/dist/contracts/AssetRegistry.d.ts.map +1 -1
- package/dist/contracts/AssetRegistry.js +134 -69
- package/dist/contracts/AssetRegistry.js.map +1 -0
- package/dist/contracts/ContractBase.d.ts.map +1 -1
- package/dist/contracts/ContractBase.js +173 -140
- package/dist/contracts/ContractBase.js.map +1 -0
- package/dist/contracts/ContractsApi.js +6 -54
- package/dist/contracts/ContractsApi.js.map +1 -0
- package/dist/contracts/CryptoTemplateBase.js +23 -11
- package/dist/contracts/CryptoTemplateBase.js.map +1 -0
- package/dist/contracts/FiatPaymentTemplate.js +9 -1
- package/dist/contracts/FiatPaymentTemplate.js.map +1 -0
- package/dist/contracts/FiatSettlementCondition.js +8 -1
- package/dist/contracts/FiatSettlementCondition.js.map +1 -0
- package/dist/contracts/FixedPaymentTemplate.js +42 -10
- package/dist/contracts/FixedPaymentTemplate.js.map +1 -0
- package/dist/contracts/NFT1155Base.js +48 -12
- package/dist/contracts/NFT1155Base.js.map +1 -0
- package/dist/contracts/NFT1155Credits.js +2 -0
- package/dist/contracts/NFT1155Credits.js.map +1 -0
- package/dist/contracts/NFT1155ExpirableCredits.js +26 -6
- package/dist/contracts/NFT1155ExpirableCredits.js.map +1 -0
- package/dist/contracts/NVMConfig.js +2 -0
- package/dist/contracts/NVMConfig.js.map +1 -0
- package/dist/contracts/PayAsYouGoTemplate.js +36 -10
- package/dist/contracts/PayAsYouGoTemplate.js.map +1 -0
- package/dist/contracts/ProtocolStandardFees.js +7 -1
- package/dist/contracts/ProtocolStandardFees.js.map +1 -0
- package/dist/contracts/Roles.js +2 -0
- package/dist/contracts/Roles.js.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/errors/NeverminedErrors.js +27 -26
- package/dist/errors/NeverminedErrors.js.map +1 -0
- package/dist/errors/index.js +2 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/models/AgentX402AccessToken.js +78 -46
- package/dist/models/AgentX402AccessToken.js.map +1 -0
- package/dist/models/Logger.js +12 -12
- package/dist/models/Logger.js.map +1 -0
- package/dist/models/NeverminedOptions.d.ts +3 -3
- package/dist/models/NeverminedOptions.d.ts.map +1 -1
- package/dist/models/NeverminedOptions.js +3 -28
- package/dist/models/NeverminedOptions.js.map +1 -0
- package/dist/models/NvmApiKey.js +96 -147
- package/dist/models/NvmApiKey.js.map +1 -0
- package/dist/models/Transactions.js +3 -1
- package/dist/models/Transactions.js.map +1 -0
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -0
- package/dist/nevermined/Nevermined.js +20 -42
- package/dist/nevermined/Nevermined.js.map +1 -0
- package/dist/nevermined/api/PaymentsApi.js +38 -43
- package/dist/nevermined/api/PaymentsApi.js.map +1 -0
- package/dist/nevermined/api/ServicesApi.js +7 -15
- package/dist/nevermined/api/ServicesApi.js.map +1 -0
- package/dist/nevermined/api/UtilsApi.js +7 -19
- package/dist/nevermined/api/UtilsApi.js.map +1 -0
- package/dist/nevermined/index.js +2 -0
- package/dist/nevermined/index.js.map +1 -0
- package/dist/nevermined/utils/AgentUtils.js +25 -23
- package/dist/nevermined/utils/AgentUtils.js.map +1 -0
- package/dist/nevermined/utils/AnvilHelpers.js +34 -19
- package/dist/nevermined/utils/AnvilHelpers.js.map +1 -0
- package/dist/nevermined/utils/BlockchainViemUtils.d.ts +4 -4
- package/dist/nevermined/utils/BlockchainViemUtils.js +102 -108
- package/dist/nevermined/utils/BlockchainViemUtils.js.map +1 -0
- package/dist/nevermined/utils/JwtUtils.js +33 -28
- package/dist/nevermined/utils/JwtUtils.js.map +1 -0
- package/dist/nevermined/utils/SignatureUtils.js +23 -27
- package/dist/nevermined/utils/SignatureUtils.js.map +1 -0
- package/dist/nevermined/utils/WebServiceConnector.js +18 -20
- package/dist/nevermined/utils/WebServiceConnector.js.map +1 -0
- package/dist/nevermined/utils/ZeroDevPolicies.js +115 -75
- package/dist/nevermined/utils/ZeroDevPolicies.js.map +1 -0
- package/dist/nevermined/utils/index.js +2 -0
- package/dist/nevermined/utils/index.js.map +1 -0
- package/dist/services/Api.js +11 -5
- package/dist/services/Api.js.map +1 -0
- package/dist/services/Profiles.js +15 -20
- package/dist/services/Profiles.js.map +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -0
- package/dist/utils/ConversionTypeHelpers.js +13 -6
- package/dist/utils/ConversionTypeHelpers.js.map +1 -0
- package/dist/utils/DeploymentInfo.js +12 -7
- package/dist/utils/DeploymentInfo.js.map +1 -0
- package/dist/utils/Network.js +27 -19
- package/dist/utils/Network.js.map +1 -0
- package/dist/utils/helpers.js +42 -31
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +17 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/ContractBase.ts"],"sourcesContent":["import { createKernelAccountClient, createZeroDevPaymasterClient } from '@zerodev/sdk'\nimport {\n estimateUserOperationFees,\n getBundlerRpcUrl,\n getPaymasterRpcUrl,\n isRelayerMode,\n} from '../nevermined/utils/BlockchainViemUtils.js'\nimport {\n Abi,\n Account,\n Address,\n BaseError,\n ContractFunctionRevertedError,\n encodeFunctionData,\n getContract,\n http,\n parseAbi,\n parseEventLogs,\n TransactionReceipt,\n} from 'viem'\nimport { SmartAccount, UserOperationReceipt } from 'viem/account-abstraction'\nimport { ContractsError, ContractSimulationError } from '../errors/index.js'\nimport { Instantiable, InstantiableConfig } from '../Instantiable.abstract.js'\nimport { TxParameters } from '../models/Transactions.js'\nimport { getInputsOfFunctionFormatted, getTransactionReceipt } from '../nevermined/index.js'\nimport { getRandomBigInt } from '../utils/helpers.js'\nimport { getChain } from '../utils/Network.js'\n\nexport interface MulticallEntry {\n contractName?: string\n contractAddress: Address\n abi: Abi\n functionName: string\n args: any[]\n}\n\n/**\n * When a testnet RPC (Base Sepolia) fails internally, some providers return\n * `eth_estimateGas` values equal to — or even above — the block gas limit\n * instead of a real error. Using that value causes the node to reject the tx\n * with `intrinsic gas too high` before it ever reaches the mempool.\n *\n * `writeContract` in viem re-estimates gas internally when `gas` isn't\n * already set on the request (viem's `simulateContract` only performs\n * `eth_call`, not `eth_estimateGas`). That means the naïve path has no\n * chance to intercept a bogus estimate. We run the estimation ourselves\n * here, sanity-check the result, and always pass an explicit gas value\n * into `writeContract` so it doesn't re-query the misbehaving RPC.\n */\nconst GAS_SANITY_THRESHOLD = 25_000_000n\nconst GAS_FALLBACK_CAP = 5_000_000n\n\n// EntryPoint v0.7: ZeroDev's `toKernelPluginManager` rejects `customNonceKey > maxUint16`.\n// 16 bits = 65 536 channels — collision probability for the SDK's expected concurrency\n// (k=2–5 parallel sends from one SCA) is negligible (< 0.02 %). High-fan-out callers\n// (k > 50) should consider a per-process monotonic counter instead. See issue #1579.\nconst ZERODEV_NONCE_KEY_BITS = 16\n\n// Client-side cap on `waitForUserOperationReceipt`. The userOp is already in the bundler\n// mempool when this fires — a client-side timeout does NOT cancel it. Callers that catch\n// the resulting `ContractsError` MUST poll `bundlerClient.getUserOperationReceipt(hash)`\n// before retrying; otherwise a retry can produce a duplicate on-chain op.\nconst USEROP_RECEIPT_TIMEOUT_MS = 90_000\n\nfunction capForBogusEstimate(\n estimatedGas: bigint,\n logger: { warn: (msg: string) => void },\n): bigint {\n if (estimatedGas < GAS_SANITY_THRESHOLD) return estimatedGas\n logger.warn(\n `Estimated gas (${estimatedGas}) exceeds sanity threshold ` +\n `(${GAS_SANITY_THRESHOLD}); overriding with ${GAS_FALLBACK_CAP} to bypass misbehaving RPC estimate.`,\n )\n return GAS_FALLBACK_CAP\n}\n\nexport interface SimulateMulticallEntry {\n functionName: string\n value?: bigint\n abi: Abi\n args: any[]\n to: Address\n}\n\nexport abstract class ContractBase extends Instantiable {\n public readonly contractName: string\n public contract: any\n public address: Address\n private _zeroDevPaymaster: ReturnType<typeof createZeroDevPaymasterClient> | null = null\n\n constructor(contractName: string, address: Address) {\n super()\n this.contractName = contractName\n this.address = address\n }\n\n protected async init(\n config: InstantiableConfig,\n contractConfig: { address: `0x${string}`; abi: Abi },\n ) {\n this.setInstanceConfig(config)\n this.address = contractConfig.address\n\n this.contract = getContract({\n address: contractConfig.address,\n abi: contractConfig.abi,\n client: { public: this.publicClient, wallet: this.walletClient },\n })\n }\n\n public async call<T>(functionName: string, args: any[], from?: string): Promise<T> {\n try {\n return (await this.client.public.readContract({\n address: this.address,\n abi: this.contract.abi,\n functionName: parseAbi([functionName]),\n args,\n ...(from && { account: from as `0x${string}` }),\n })) as T\n //return await this.contract[functionSignature](...args, { from })\n } catch (err) {\n throw new ContractsError(\n `Calling method \"${functionName}\" on contract \"${this.contractName}\" failed. Args: ${args} - ${err}`,\n )\n }\n }\n\n public async getTransactionReceipt(\n txHash: UserOperationReceipt | TransactionReceipt,\n ): Promise<TransactionReceipt> {\n // Get the transaction receipt depending on the type of txHash\n if ('transactionHash' in txHash) {\n // txHash is TransactionReceipt\n return txHash\n } else if ('userOpHash' in txHash) {\n // txHash is UserOperationReceipt, fetch the actual receipt using the utility function with retry logic\n const hash = txHash.receipt.transactionHash\n return await getTransactionReceipt({\n txHash: hash,\n publicClient: this.client.public,\n })\n } else {\n throw new Error('Unknown transaction type')\n }\n }\n\n public getTransactionLogs(\n txReceipt: TransactionReceipt | UserOperationReceipt,\n eventName?: string,\n ) {\n return parseEventLogs({\n abi: this.contract.abi,\n logs: txReceipt.logs,\n eventName,\n strict: false,\n }) as any[]\n }\n\n public async multicall(\n calls: MulticallEntry[],\n from: Account | SmartAccount,\n params: TxParameters = {},\n ) {\n if (from.type === 'local') {\n this.logger.debug(`Blockchain Multicall using Local account`)\n return await this.localAccountMulticall(calls, from, params, params.progress)\n } else if (from.type === 'json-rpc') {\n this.logger.debug(`Blockchain Multicall using JSON-RPC account`)\n return await this.localAccountMulticall(calls, from, params, params.progress)\n } else if (from.type === 'smart') {\n this.logger.debug(`Blockchain Multicall using ZeroDev account`)\n return await this.internalMulticallSmartAccount(calls, from, params, params.progress)\n } else {\n throw new ContractsError(`Account not supported`)\n }\n }\n\n public async simulateMulticall(\n calls: SimulateMulticallEntry[],\n from: Account | SmartAccount,\n params: TxParameters = {},\n ) {\n if (from.type === 'local') {\n this.logger.debug(`Simulating calls using Local account`)\n return await this.localAccountSimulateMulticall(calls, from, params)\n } else if (from.type === 'json-rpc') {\n this.logger.debug(`Simulating calls using JSON-RPC account`)\n return await this.localAccountSimulateMulticall(calls, from, params)\n } else if (from.type === 'smart') {\n this.logger.debug(`Simulating calls using Smart Account account`)\n return await this.internalSimulateMulticallSmartAccount(calls, from, params)\n } else {\n throw new ContractsError(`Account not supported`)\n }\n }\n\n public async simulate(\n functionName: string,\n from: Account | SmartAccount,\n args: any[],\n params: TxParameters = {},\n ) {\n if (from.type === 'local') {\n this.logger.debug(`Simulating calls using Local account`)\n return await this.localAccountSimulate(functionName, from, args, params)\n } else if (from.type === 'json-rpc') {\n this.logger.debug(`Simulating calls using JSON-RPC account`)\n return await this.localAccountSimulate(functionName, from, args, params)\n } else if (from.type === 'smart') {\n this.logger.debug(`Simulating calls using Smart Account account`)\n return await this.internalSimulateSmartAccount(functionName, from, args, params)\n } else {\n throw new ContractsError(`Account not supported`)\n }\n }\n\n public async send(\n functionName: string,\n from: Account | SmartAccount,\n args: any[],\n params: TxParameters = {},\n ): Promise<TransactionReceipt | UserOperationReceipt> {\n if (from.type === 'local') {\n this.logger.debug(\n `Blockchain Send using Local account with functionName: ${functionName} and following args: ${args}`,\n )\n return await this.localAccountSend(functionName, from, args, params, params.progress)\n } else if (from.type === 'json-rpc') {\n this.logger.debug(`Blockchain Send using JSON-RPC account to ${functionName}`)\n return await this.localAccountSend(functionName, from, args, params, params.progress)\n } else if (from.type === 'smart') {\n this.logger.debug(`Blockchain Send using ZeroDev account`)\n return await this.internalSendSmartAccount(functionName, from, args, params, params.progress)\n } else {\n throw new ContractsError(`Account not supported`)\n }\n }\n\n private async internalMulticallSmartAccount(\n calls: MulticallEntry[],\n from: SmartAccount,\n txparams: any,\n progress: ((data: any) => void) | undefined,\n ) {\n if (progress) {\n progress({\n stage: 'multicall-sending',\n args: [],\n method: '',\n from: from,\n contractAddress: this.address,\n })\n }\n\n const kernelClient = createKernelAccountClient({\n account: from,\n chain: getChain(this.config.chainId),\n bundlerTransport: http(this.getBundlerRPC()),\n client: this.client.public,\n ...this.getPaymasterConfig(),\n userOperation: {\n estimateFeesPerGas: async ({ bundlerClient }) => {\n return estimateUserOperationFees(bundlerClient, this.client.public)\n },\n },\n })\n\n const encodedCalls: any[] = []\n calls.map((call) => {\n encodedCalls.push({\n to: call.contractAddress || this.address,\n value: txparams.value || 0n,\n data: encodeFunctionData({\n abi: call.abi,\n functionName: call.functionName,\n args: call.args,\n }),\n })\n })\n\n let userOpHash: `0x${string}` | undefined\n try {\n // Random nonce key per send so concurrent userOps from the same SCA\n // hit distinct EntryPoint nonce channels instead of colliding on the\n // default `customNonceKey=0n`. See issue #1579.\n const nonce = await from.getNonce({ key: getRandomBigInt(ZERODEV_NONCE_KEY_BITS) })\n userOpHash = await kernelClient.sendUserOperation({\n callData: await kernelClient.account.encodeCalls(encodedCalls),\n nonce,\n })\n\n if (progress) {\n progress({\n stage: 'multicall-sent',\n args: [],\n method: '',\n from: from,\n contractAddress: this.address,\n })\n }\n\n // Wait for the transaction to be mined\n this.logger.debug(`Waiting for transaction to be mined... ${userOpHash}`)\n const txReceipt = await kernelClient.waitForUserOperationReceipt({\n hash: userOpHash,\n timeout: USEROP_RECEIPT_TIMEOUT_MS,\n })\n this.logger.debug(`Transaction mined - UserOperationHash: ${userOpHash}`)\n this.logger.debug(\n `Transaction receipt - TransactionHash: ${txReceipt.receipt.transactionHash}`,\n )\n this.assertUserOpSucceeded(txReceipt, 'multicall', userOpHash)\n return txReceipt.receipt\n } catch (err) {\n if (err instanceof BaseError) {\n const revertError = err.walk((err) => err instanceof ContractFunctionRevertedError)\n this.logger.error(`revertError: ${String(revertError)}`)\n }\n // Surface userOpHash so callers can poll for eventual inclusion before\n // retrying — a client-side receipt-wait timeout does NOT cancel the userOp.\n const hashSuffix = userOpHash ? ` userOpHash=${userOpHash}` : ''\n throw new ContractsError(`Multicall failed:${hashSuffix} ${err}`)\n }\n }\n\n private assertUserOpSucceeded(\n txReceipt: UserOperationReceipt,\n method: string,\n userOpHash: string,\n ): void {\n if (txReceipt.success) return\n throw new ContractsError(\n `UserOp inner call reverted for \"${method}\" on \"${this.contractName}\". ` +\n `userOpHash=${userOpHash} txHash=${txReceipt.receipt.transactionHash} ` +\n `reason=${txReceipt.reason ?? 'unknown'}`,\n )\n }\n\n private async internalSendSmartAccount(\n name: string,\n from: SmartAccount,\n args: any[],\n txparams: any,\n progress: ((data: any) => void) | undefined,\n ): Promise<UserOperationReceipt> {\n const functionInputs = getInputsOfFunctionFormatted(this.contract.abi, name, args)\n\n const { gasLimit, value } = txparams\n if (progress) {\n progress({\n stage: 'sending',\n args: functionInputs,\n method: name,\n from: from,\n value,\n contractName: this.contractName,\n contractAddress: this.address,\n gasLimit,\n })\n }\n\n try {\n await this.client.public.simulateContract({\n address: this.address,\n abi: this.contract.abi,\n functionName: name,\n args,\n account: from,\n ...(txparams.value && { value: txparams.value }),\n })\n } catch (err) {\n if (err instanceof BaseError) {\n const revertError = err.walk((err) => err instanceof ContractFunctionRevertedError)\n this.logger.error(`revertError: ${String(revertError)}`)\n }\n throw new ContractsError(\n `Calling method \"${name}\" on contract \"${this.contractName}\" failed. Args: ${args} - ${err}`,\n )\n }\n\n const kernelClient = createKernelAccountClient({\n account: from,\n chain: getChain(this.config.chainId),\n bundlerTransport: http(this.getBundlerRPC()),\n client: this.client.public,\n ...this.getPaymasterConfig(),\n userOperation: {\n estimateFeesPerGas: async ({ bundlerClient }) => {\n return estimateUserOperationFees(bundlerClient, this.client.public)\n },\n },\n })\n const data = encodeFunctionData({ abi: this.contract.abi, functionName: name, args })\n\n let userOpHash\n try {\n // Random nonce key per send so concurrent userOps from the same SCA\n // hit distinct EntryPoint nonce channels instead of colliding on the\n // default `customNonceKey=0n`. See issue #1579.\n const nonce = await from.getNonce({ key: getRandomBigInt(ZERODEV_NONCE_KEY_BITS) })\n userOpHash = await kernelClient.sendUserOperation({\n callData: await kernelClient.account.encodeCalls([\n {\n to: this.address,\n value: txparams.value || 0n,\n data,\n },\n ]),\n nonce,\n })\n } catch (err) {\n if (err instanceof BaseError) {\n const revertError = err.walk((err) => err instanceof ContractFunctionRevertedError)\n this.logger.error(`revertError: ${String(revertError)}`)\n }\n throw new ContractsError(\n `Calling method \"${name}\" on contract \"${this.contractName}\" failed. Args: ${args} - ${err}`,\n )\n }\n\n if (progress) {\n progress({\n stage: 'sent',\n args: functionInputs,\n userOpHash,\n method: name,\n from: from,\n value,\n contractName: this.contractName,\n contractAddress: this.address,\n gasLimit,\n })\n }\n\n let txReceipt: UserOperationReceipt\n try {\n txReceipt = await kernelClient.waitForUserOperationReceipt({\n hash: userOpHash,\n timeout: USEROP_RECEIPT_TIMEOUT_MS,\n })\n } catch (err) {\n // The userOp is already in the bundler mempool — a client-side timeout\n // does NOT cancel it. Surface userOpHash so callers can poll for eventual\n // inclusion before retrying, otherwise a retry can produce a duplicate\n // on-chain op. Wrap symmetric to `internalMulticallSmartAccount`.\n throw new ContractsError(\n `Calling method \"${name}\" on contract \"${this.contractName}\" timed out ` +\n `waiting for UserOp receipt. userOpHash=${userOpHash} — confirm on-chain ` +\n `inclusion before retrying. Underlying: ${err}`,\n )\n }\n\n this.assertUserOpSucceeded(txReceipt, name, userOpHash)\n\n if (progress) {\n progress({\n stage: 'receipt',\n args: functionInputs,\n txReceipt,\n method: name,\n from: from,\n value,\n contractName: this.contractName,\n contractAddress: this.address,\n gasLimit,\n })\n }\n\n return txReceipt\n }\n\n private async internalSimulateSmartAccount(\n name: string,\n from: SmartAccount,\n args: any[],\n txparams: any,\n ) {\n try {\n await this.client.public.simulateContract({\n address: this.address,\n abi: this.contract.abi,\n functionName: name,\n args,\n account: from.address,\n ...(txparams.value && { value: txparams.value }),\n })\n return true\n } catch (err) {\n throw new ContractSimulationError(\n `Error Simulating contract call \"${name}\" on contract \"${this.contractName}\" failed. Args: ${args} - ${err}`,\n )\n }\n }\n\n private async localAccountSimulate(\n name: string,\n from: Account | `0x${string}`,\n args: any[],\n txparams: any,\n ) {\n try {\n await this.client.public.simulateContract({\n address: this.address,\n abi: this.contract.abi,\n functionName: name,\n args,\n account: from,\n ...(txparams.value && { value: txparams.value }),\n })\n } catch (err) {\n throw new ContractSimulationError(\n `Error Simulating contract call \"${name}\" on contract \"${this.contractName}\" failed. Args: ${args} - ${err}`,\n )\n }\n return true\n }\n\n private async localAccountSend(\n name: string,\n from: Account | `0x${string}`,\n args: any[],\n txparams: any,\n progress: ((data: any) => void) | undefined,\n _contractAbi?: Abi,\n _contractAddress?: Address,\n _contractName?: string,\n ) {\n const abi = _contractAbi || this.contract.abi\n const contractAddress = _contractAddress || this.address\n const contractName = _contractName || this.contractName\n\n const functionInputs = getInputsOfFunctionFormatted(abi, name, args)\n // Uncomment to debug contract calls\n // if (name === 'order') {\n // const functionSignature = getSignatureOfFunction(this.contract.abi, name, args)\n // this.logger.info(`Making contract call ....: ${name} - ${from}`)\n // this.logger.info(`With args: `, JSON.stringify(args, jsonReplacer))\n // this.logger.info(`And signature: ${JSON.stringify(functionSignature, jsonReplacer)}`)\n // this.logger.info('And amount: ', txparams.value)\n // }\n // abi.filter(({name, inputs}) => name === 'closeSignals' && inputs.length === 1)\n // const abiFilter = this.contract.abi.filter((abi) => abi.name === name && abi.inputs.length === args.length)\n // const abiFilter = this.contract.abi.filter((abi) => abi.name === name && abi.type === 'function')\n // console.debug('abi', this.contract.abi.filter((abi) => abi.name === name))\n // console.debug('abiFilter', abiFilter)\n // if (!abiFilter)\n // throw new ContractsError(\n // `No ABI found for method \"${name}\" with ${args.length} arguments on contract \"${this.contractName}\"`,\n // )\n\n const { gasLimit, value } = txparams\n // make the call\n if (progress) {\n progress({\n stage: 'sending',\n args: functionInputs,\n method: name,\n from,\n value,\n contractName,\n contractAddress,\n gasLimit,\n })\n }\n\n let txHash: `0x${string}` | undefined\n try {\n const { request } = await this.client.public.simulateContract({\n address: contractAddress,\n abi,\n functionName: name,\n args,\n account: from,\n ...(txparams.value && { value: txparams.value }),\n })\n\n // Resolve gas ourselves so `writeContract` never falls back to its own\n // `eth_estimateGas`. An explicit caller `gasLimit` always wins; otherwise\n // we estimate, apply the block-limit sanity check, and pin the result.\n // If estimation itself fails we still honour any explicit cap.\n let resolvedGas: bigint | undefined = gasLimit\n if (resolvedGas === undefined) {\n try {\n const estimate = await this.client.public.estimateContractGas({\n address: contractAddress,\n abi,\n functionName: name,\n args,\n account: from,\n ...(txparams.value && { value: txparams.value }),\n })\n resolvedGas = capForBogusEstimate(estimate, this.logger)\n } catch (estErr) {\n this.logger.warn(\n `estimateContractGas for \"${name}\" on \"${contractName}\" failed (${estErr}); ` +\n `falling back to ${GAS_FALLBACK_CAP} to avoid a bogus RPC re-estimate in writeContract.`,\n )\n resolvedGas = GAS_FALLBACK_CAP\n }\n }\n\n txHash = await this.client.wallet.writeContract({\n ...request,\n account: from,\n gas: resolvedGas,\n })\n } catch (err) {\n if (err instanceof BaseError) {\n const revertError = err.walk((err) => err instanceof ContractFunctionRevertedError)\n this.logger.error(`revertError: ${String(revertError)}`)\n }\n throw new ContractsError(\n `Calling method \"${name}\" on contract \"${contractName}\" failed. Args: ${args} - ${err}`,\n )\n }\n\n if (progress) {\n progress({\n stage: 'sent',\n args: functionInputs,\n txHash,\n method: name,\n from,\n value,\n contractName,\n contractAddress,\n gasLimit,\n })\n }\n const txReceipt = getTransactionReceipt({ txHash, publicClient: this.client.public })\n\n if (progress) {\n progress({\n stage: 'receipt',\n args: functionInputs,\n txReceipt,\n method: name,\n from,\n value,\n contractName,\n contractAddress,\n gasLimit,\n })\n }\n\n return txReceipt\n }\n\n private async localAccountMulticall(\n calls: MulticallEntry[],\n from: Account,\n txparams: any,\n progress: ((data: any) => void) | undefined,\n ): Promise<TransactionReceipt> {\n const receipts: TransactionReceipt[] = []\n for (const call of calls) {\n receipts.push(\n await this.localAccountSend(\n call.functionName,\n from,\n call.args,\n txparams,\n progress,\n call.abi,\n call.contractAddress,\n call.contractName,\n ),\n )\n }\n if (receipts.length > 0) return receipts.pop() as TransactionReceipt\n else throw new ContractsError(`No receipts found for multicall`)\n }\n\n private async localAccountSimulateMulticall(\n calls: SimulateMulticallEntry[],\n from: Account,\n txparams: any,\n ) {\n try {\n const { results } = await this.client.public.simulateCalls({\n calls,\n account: from,\n })\n this.logger.debug(`Simulated multicall - ${results}`)\n return true\n } catch (err) {\n if (err instanceof BaseError) {\n const revertError = err.walk((err) => err instanceof ContractFunctionRevertedError)\n this.logger.error(`revertError: ${String(revertError)}`)\n }\n throw new ContractsError(`Error simulating multicall - ${err}`)\n }\n }\n\n private async internalSimulateMulticallSmartAccount(\n calls: SimulateMulticallEntry[],\n from: SmartAccount,\n txparams: any,\n ) {\n try {\n const kernelClient = createKernelAccountClient({\n account: from,\n chain: getChain(this.config.chainId),\n bundlerTransport: http(this.getBundlerRPC()),\n client: this.client.public,\n ...this.getPaymasterConfig(),\n userOperation: {\n estimateFeesPerGas: async ({ bundlerClient }) => {\n return estimateUserOperationFees(bundlerClient, this.client.public)\n },\n },\n })\n\n const encodedCalls = []\n for (const call of calls) {\n encodedCalls.push({\n to: call.to,\n value: call.value || 0n,\n data: encodeFunctionData({\n abi: call.abi,\n functionName: call.functionName,\n args: call.args,\n }),\n })\n }\n\n // DONT DELETE THE COMMENTED LINES - ARE NECESSARY FOR F***ING ZERODEV DEBUGGING\n\n // this.logger.info(`Encoded multicall - ${JSON.stringify(encodedCalls, jsonReplacer)}`)\n // const code = await this.client.public.getCode({ address: from.address })\n // const isDeployed = code !== undefined && code !== '0x'\n // this.logger.info(`++++++ Smart account ${from.address} deployment status: ${isDeployed ? 'DEPLOYED' : 'NOT DEPLOYED'}`)\n\n // // Log account details\n // this.logger.info(`Account type: ${from.type}`)\n // this.logger.info(`Account address: ${from.address}`)\n\n // // Log the calls being made\n // this.logger.info(`Number of calls: ${encodedCalls.length}`)\n // encodedCalls.forEach((call, index) => {\n // this.logger.info(`Call ${index}: to=${call.to}, value=${call.value}, data=${call.data.slice(0, 10)}...`)\n // })\n\n await kernelClient.prepareUserOperation({\n callData: await kernelClient.account.encodeCalls(encodedCalls),\n })\n\n return true\n } catch (err) {\n this.logger.error(`Error details: ${JSON.stringify(err, null, 2)}`)\n if (err instanceof BaseError) {\n const revertError = err.walk((e) => e instanceof ContractFunctionRevertedError)\n if (revertError) {\n this.logger.error(`Revert error: ${String(revertError)}`)\n }\n }\n throw new ContractSimulationError(`Error Simulating Multicalls - ${err}`)\n }\n }\n\n private getOrCreatePaymaster() {\n if (!this._zeroDevPaymaster) {\n this._zeroDevPaymaster = createZeroDevPaymasterClient({\n chain: getChain(this.config.chainId),\n transport: http(this.getPaymasterRPC()),\n })\n }\n return this._zeroDevPaymaster\n }\n\n /**\n * Builds the `paymaster` partial for `createKernelAccountClient`. In relayer\n * mode (e.g. local `ultra-relay` for tests) returns an empty object so the\n * kernel client submits UserOps without paymaster fields and the bundler\n * pays gas via its executor key. In production returns the ZeroDev paymaster\n * sponsorship callback.\n */\n private getPaymasterConfig() {\n if (isRelayerMode()) return {}\n const zerodevPaymaster = this.getOrCreatePaymaster()\n return {\n paymaster: {\n getPaymasterData: (userOperation: any) =>\n zerodevPaymaster.sponsorUserOperation({ userOperation }),\n },\n }\n }\n\n protected getBundlerRPC(): string {\n // In relayer mode `getBundlerRpcUrl` reads `BUNDLER_RPC_URL_OVERRIDE`\n // and never touches the project id, so an empty value is harmless. In\n // production callers must pass a project id — surface a clear error if\n // the SDK was instantiated without one and we need it.\n const projectId = this.config.zeroDevProjectId\n if (!projectId && !isRelayerMode()) {\n throw new ContractsError(\n 'getBundlerRPC: zeroDevProjectId is required for non-relayer (production) mode',\n )\n }\n return getBundlerRpcUrl(projectId ?? '', this.config.chainId)\n }\n\n private getPaymasterRPC(): string {\n // Only ever consulted when `getPaymasterConfig` decides to attach a\n // paymaster, which is gated on `!isRelayerMode()`. A missing project\n // id at this point is a configuration bug worth surfacing.\n const projectId = this.config.zeroDevProjectId\n if (!projectId) {\n throw new ContractsError(\n 'getPaymasterRPC: zeroDevProjectId is required to build the paymaster URL',\n )\n }\n return getPaymasterRpcUrl(projectId, this.config.chainId)\n }\n}\n"],"names":["createKernelAccountClient","createZeroDevPaymasterClient","estimateUserOperationFees","getBundlerRpcUrl","getPaymasterRpcUrl","isRelayerMode","BaseError","ContractFunctionRevertedError","encodeFunctionData","getContract","http","parseAbi","parseEventLogs","ContractsError","ContractSimulationError","Instantiable","getInputsOfFunctionFormatted","getTransactionReceipt","getRandomBigInt","getChain","GAS_SANITY_THRESHOLD","GAS_FALLBACK_CAP","ZERODEV_NONCE_KEY_BITS","USEROP_RECEIPT_TIMEOUT_MS","capForBogusEstimate","estimatedGas","logger","warn","ContractBase","contractName","address","_zeroDevPaymaster","init","config","contractConfig","setInstanceConfig","contract","abi","client","public","publicClient","wallet","walletClient","call","functionName","args","from","readContract","account","err","txHash","hash","receipt","transactionHash","Error","getTransactionLogs","txReceipt","eventName","logs","strict","multicall","calls","params","type","debug","localAccountMulticall","progress","internalMulticallSmartAccount","simulateMulticall","localAccountSimulateMulticall","internalSimulateMulticallSmartAccount","simulate","localAccountSimulate","internalSimulateSmartAccount","send","localAccountSend","internalSendSmartAccount","txparams","stage","method","contractAddress","kernelClient","chain","chainId","bundlerTransport","getBundlerRPC","getPaymasterConfig","userOperation","estimateFeesPerGas","bundlerClient","encodedCalls","map","push","to","value","data","userOpHash","nonce","getNonce","key","sendUserOperation","callData","encodeCalls","waitForUserOperationReceipt","timeout","assertUserOpSucceeded","revertError","walk","error","String","hashSuffix","success","reason","name","functionInputs","gasLimit","simulateContract","_contractAbi","_contractAddress","_contractName","request","resolvedGas","undefined","estimate","estimateContractGas","estErr","writeContract","gas","receipts","length","pop","results","simulateCalls","prepareUserOperation","JSON","stringify","e","getOrCreatePaymaster","transport","getPaymasterRPC","zerodevPaymaster","paymaster","getPaymasterData","sponsorUserOperation","projectId","zeroDevProjectId"],"mappings":"AAAA,SAASA,yBAAyB,EAAEC,4BAA4B,QAAQ,eAAc;AACtF,SACEC,yBAAyB,EACzBC,gBAAgB,EAChBC,kBAAkB,EAClBC,aAAa,QACR,6CAA4C;AACnD,SAIEC,SAAS,EACTC,6BAA6B,EAC7BC,kBAAkB,EAClBC,WAAW,EACXC,IAAI,EACJC,QAAQ,EACRC,cAAc,QAET,OAAM;AAEb,SAASC,cAAc,EAAEC,uBAAuB,QAAQ,qBAAoB;AAC5E,SAASC,YAAY,QAA4B,8BAA6B;AAE9E,SAASC,4BAA4B,EAAEC,qBAAqB,QAAQ,yBAAwB;AAC5F,SAASC,eAAe,QAAQ,sBAAqB;AACrD,SAASC,QAAQ,QAAQ,sBAAqB;AAU9C;;;;;;;;;;;;CAYC,GACD,MAAMC,uBAAuB,WAAW;AACxC,MAAMC,mBAAmB,UAAU;AAEnC,2FAA2F;AAC3F,uFAAuF;AACvF,qFAAqF;AACrF,qFAAqF;AACrF,MAAMC,yBAAyB;AAE/B,yFAAyF;AACzF,yFAAyF;AACzF,yFAAyF;AACzF,0EAA0E;AAC1E,MAAMC,4BAA4B;AAElC,SAASC,oBACPC,YAAoB,EACpBC,MAAuC;IAEvC,IAAID,eAAeL,sBAAsB,OAAOK;IAChDC,OAAOC,IAAI,CACT,CAAC,eAAe,EAAEF,aAAa,2BAA2B,CAAC,GACzD,CAAC,CAAC,EAAEL,qBAAqB,mBAAmB,EAAEC,iBAAiB,oCAAoC,CAAC;IAExG,OAAOA;AACT;AAUA,OAAO,MAAeO,qBAAqBb;IAMzC,YAAYc,YAAoB,EAAEC,OAAgB,CAAE;QAClD,KAAK,SAHCC,oBAA4E;QAIlF,IAAI,CAACF,YAAY,GAAGA;QACpB,IAAI,CAACC,OAAO,GAAGA;IACjB;IAEA,MAAgBE,KACdC,MAA0B,EAC1BC,cAAoD,EACpD;QACA,IAAI,CAACC,iBAAiB,CAACF;QACvB,IAAI,CAACH,OAAO,GAAGI,eAAeJ,OAAO;QAErC,IAAI,CAACM,QAAQ,GAAG3B,YAAY;YAC1BqB,SAASI,eAAeJ,OAAO;YAC/BO,KAAKH,eAAeG,GAAG;YACvBC,QAAQ;gBAAEC,QAAQ,IAAI,CAACC,YAAY;gBAAEC,QAAQ,IAAI,CAACC,YAAY;YAAC;QACjE;IACF;IAEA,MAAaC,KAAQC,YAAoB,EAAEC,IAAW,EAAEC,IAAa,EAAc;QACjF,IAAI;YACF,OAAQ,MAAM,IAAI,CAACR,MAAM,CAACC,MAAM,CAACQ,YAAY,CAAC;gBAC5CjB,SAAS,IAAI,CAACA,OAAO;gBACrBO,KAAK,IAAI,CAACD,QAAQ,CAACC,GAAG;gBACtBO,cAAcjC,SAAS;oBAACiC;iBAAa;gBACrCC;gBACA,GAAIC,QAAQ;oBAAEE,SAASF;gBAAsB,CAAC;YAChD;QACA,kEAAkE;QACpE,EAAE,OAAOG,KAAK;YACZ,MAAM,IAAIpC,eACR,CAAC,gBAAgB,EAAE+B,aAAa,eAAe,EAAE,IAAI,CAACf,YAAY,CAAC,gBAAgB,EAAEgB,KAAK,GAAG,EAAEI,KAAK;QAExG;IACF;IAEA,MAAahC,sBACXiC,MAAiD,EACpB;QAC7B,8DAA8D;QAC9D,IAAI,qBAAqBA,QAAQ;YAC/B,+BAA+B;YAC/B,OAAOA;QACT,OAAO,IAAI,gBAAgBA,QAAQ;YACjC,uGAAuG;YACvG,MAAMC,OAAOD,OAAOE,OAAO,CAACC,eAAe;YAC3C,OAAO,MAAMpC,sBAAsB;gBACjCiC,QAAQC;gBACRX,cAAc,IAAI,CAACF,MAAM,CAACC,MAAM;YAClC;QACF,OAAO;YACL,MAAM,IAAIe,MAAM;QAClB;IACF;IAEOC,mBACLC,SAAoD,EACpDC,SAAkB,EAClB;QACA,OAAO7C,eAAe;YACpByB,KAAK,IAAI,CAACD,QAAQ,CAACC,GAAG;YACtBqB,MAAMF,UAAUE,IAAI;YACpBD;YACAE,QAAQ;QACV;IACF;IAEA,MAAaC,UACXC,KAAuB,EACvBf,IAA4B,EAC5BgB,SAAuB,CAAC,CAAC,EACzB;QACA,IAAIhB,KAAKiB,IAAI,KAAK,SAAS;YACzB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,wCAAwC,CAAC;YAC5D,OAAO,MAAM,IAAI,CAACC,qBAAqB,CAACJ,OAAOf,MAAMgB,QAAQA,OAAOI,QAAQ;QAC9E,OAAO,IAAIpB,KAAKiB,IAAI,KAAK,YAAY;YACnC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,2CAA2C,CAAC;YAC/D,OAAO,MAAM,IAAI,CAACC,qBAAqB,CAACJ,OAAOf,MAAMgB,QAAQA,OAAOI,QAAQ;QAC9E,OAAO,IAAIpB,KAAKiB,IAAI,KAAK,SAAS;YAChC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,0CAA0C,CAAC;YAC9D,OAAO,MAAM,IAAI,CAACG,6BAA6B,CAACN,OAAOf,MAAMgB,QAAQA,OAAOI,QAAQ;QACtF,OAAO;YACL,MAAM,IAAIrD,eAAe,CAAC,qBAAqB,CAAC;QAClD;IACF;IAEA,MAAauD,kBACXP,KAA+B,EAC/Bf,IAA4B,EAC5BgB,SAAuB,CAAC,CAAC,EACzB;QACA,IAAIhB,KAAKiB,IAAI,KAAK,SAAS;YACzB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,oCAAoC,CAAC;YACxD,OAAO,MAAM,IAAI,CAACK,6BAA6B,CAACR,OAAOf,MAAMgB;QAC/D,OAAO,IAAIhB,KAAKiB,IAAI,KAAK,YAAY;YACnC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,uCAAuC,CAAC;YAC3D,OAAO,MAAM,IAAI,CAACK,6BAA6B,CAACR,OAAOf,MAAMgB;QAC/D,OAAO,IAAIhB,KAAKiB,IAAI,KAAK,SAAS;YAChC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,4CAA4C,CAAC;YAChE,OAAO,MAAM,IAAI,CAACM,qCAAqC,CAACT,OAAOf,MAAMgB;QACvE,OAAO;YACL,MAAM,IAAIjD,eAAe,CAAC,qBAAqB,CAAC;QAClD;IACF;IAEA,MAAa0D,SACX3B,YAAoB,EACpBE,IAA4B,EAC5BD,IAAW,EACXiB,SAAuB,CAAC,CAAC,EACzB;QACA,IAAIhB,KAAKiB,IAAI,KAAK,SAAS;YACzB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,oCAAoC,CAAC;YACxD,OAAO,MAAM,IAAI,CAACQ,oBAAoB,CAAC5B,cAAcE,MAAMD,MAAMiB;QACnE,OAAO,IAAIhB,KAAKiB,IAAI,KAAK,YAAY;YACnC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,uCAAuC,CAAC;YAC3D,OAAO,MAAM,IAAI,CAACQ,oBAAoB,CAAC5B,cAAcE,MAAMD,MAAMiB;QACnE,OAAO,IAAIhB,KAAKiB,IAAI,KAAK,SAAS;YAChC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,4CAA4C,CAAC;YAChE,OAAO,MAAM,IAAI,CAACS,4BAA4B,CAAC7B,cAAcE,MAAMD,MAAMiB;QAC3E,OAAO;YACL,MAAM,IAAIjD,eAAe,CAAC,qBAAqB,CAAC;QAClD;IACF;IAEA,MAAa6D,KACX9B,YAAoB,EACpBE,IAA4B,EAC5BD,IAAW,EACXiB,SAAuB,CAAC,CAAC,EAC2B;QACpD,IAAIhB,KAAKiB,IAAI,KAAK,SAAS;YACzB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CACf,CAAC,uDAAuD,EAAEpB,aAAa,qBAAqB,EAAEC,MAAM;YAEtG,OAAO,MAAM,IAAI,CAAC8B,gBAAgB,CAAC/B,cAAcE,MAAMD,MAAMiB,QAAQA,OAAOI,QAAQ;QACtF,OAAO,IAAIpB,KAAKiB,IAAI,KAAK,YAAY;YACnC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,0CAA0C,EAAEpB,cAAc;YAC7E,OAAO,MAAM,IAAI,CAAC+B,gBAAgB,CAAC/B,cAAcE,MAAMD,MAAMiB,QAAQA,OAAOI,QAAQ;QACtF,OAAO,IAAIpB,KAAKiB,IAAI,KAAK,SAAS;YAChC,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,qCAAqC,CAAC;YACzD,OAAO,MAAM,IAAI,CAACY,wBAAwB,CAAChC,cAAcE,MAAMD,MAAMiB,QAAQA,OAAOI,QAAQ;QAC9F,OAAO;YACL,MAAM,IAAIrD,eAAe,CAAC,qBAAqB,CAAC;QAClD;IACF;IAEA,MAAcsD,8BACZN,KAAuB,EACvBf,IAAkB,EAClB+B,QAAa,EACbX,QAA2C,EAC3C;QACA,IAAIA,UAAU;YACZA,SAAS;gBACPY,OAAO;gBACPjC,MAAM,EAAE;gBACRkC,QAAQ;gBACRjC,MAAMA;gBACNkC,iBAAiB,IAAI,CAAClD,OAAO;YAC/B;QACF;QAEA,MAAMmD,eAAejF,0BAA0B;YAC7CgD,SAASF;YACToC,OAAO/D,SAAS,IAAI,CAACc,MAAM,CAACkD,OAAO;YACnCC,kBAAkB1E,KAAK,IAAI,CAAC2E,aAAa;YACzC/C,QAAQ,IAAI,CAACA,MAAM,CAACC,MAAM;YAC1B,GAAG,IAAI,CAAC+C,kBAAkB,EAAE;YAC5BC,eAAe;gBACbC,oBAAoB,OAAO,EAAEC,aAAa,EAAE;oBAC1C,OAAOvF,0BAA0BuF,eAAe,IAAI,CAACnD,MAAM,CAACC,MAAM;gBACpE;YACF;QACF;QAEA,MAAMmD,eAAsB,EAAE;QAC9B7B,MAAM8B,GAAG,CAAC,CAAChD;YACT+C,aAAaE,IAAI,CAAC;gBAChBC,IAAIlD,KAAKqC,eAAe,IAAI,IAAI,CAAClD,OAAO;gBACxCgE,OAAOjB,SAASiB,KAAK,IAAI,EAAE;gBAC3BC,MAAMvF,mBAAmB;oBACvB6B,KAAKM,KAAKN,GAAG;oBACbO,cAAcD,KAAKC,YAAY;oBAC/BC,MAAMF,KAAKE,IAAI;gBACjB;YACF;QACF;QAEA,IAAImD;QACJ,IAAI;YACF,oEAAoE;YACpE,qEAAqE;YACrE,gDAAgD;YAChD,MAAMC,QAAQ,MAAMnD,KAAKoD,QAAQ,CAAC;gBAAEC,KAAKjF,gBAAgBI;YAAwB;YACjF0E,aAAa,MAAMf,aAAamB,iBAAiB,CAAC;gBAChDC,UAAU,MAAMpB,aAAajC,OAAO,CAACsD,WAAW,CAACZ;gBACjDO;YACF;YAEA,IAAI/B,UAAU;gBACZA,SAAS;oBACPY,OAAO;oBACPjC,MAAM,EAAE;oBACRkC,QAAQ;oBACRjC,MAAMA;oBACNkC,iBAAiB,IAAI,CAAClD,OAAO;gBAC/B;YACF;YAEA,uCAAuC;YACvC,IAAI,CAACJ,MAAM,CAACsC,KAAK,CAAC,CAAC,uCAAuC,EAAEgC,YAAY;YACxE,MAAMxC,YAAY,MAAMyB,aAAasB,2BAA2B,CAAC;gBAC/DpD,MAAM6C;gBACNQ,SAASjF;YACX;YACA,IAAI,CAACG,MAAM,CAACsC,KAAK,CAAC,CAAC,uCAAuC,EAAEgC,YAAY;YACxE,IAAI,CAACtE,MAAM,CAACsC,KAAK,CACf,CAAC,uCAAuC,EAAER,UAAUJ,OAAO,CAACC,eAAe,EAAE;YAE/E,IAAI,CAACoD,qBAAqB,CAACjD,WAAW,aAAawC;YACnD,OAAOxC,UAAUJ,OAAO;QAC1B,EAAE,OAAOH,KAAK;YACZ,IAAIA,eAAe3C,WAAW;gBAC5B,MAAMoG,cAAczD,IAAI0D,IAAI,CAAC,CAAC1D,MAAQA,eAAe1C;gBACrD,IAAI,CAACmB,MAAM,CAACkF,KAAK,CAAC,CAAC,aAAa,EAAEC,OAAOH,cAAc;YACzD;YACA,uEAAuE;YACvE,4EAA4E;YAC5E,MAAMI,aAAad,aAAa,CAAC,YAAY,EAAEA,YAAY,GAAG;YAC9D,MAAM,IAAInF,eAAe,CAAC,iBAAiB,EAAEiG,WAAW,CAAC,EAAE7D,KAAK;QAClE;IACF;IAEQwD,sBACNjD,SAA+B,EAC/BuB,MAAc,EACdiB,UAAkB,EACZ;QACN,IAAIxC,UAAUuD,OAAO,EAAE;QACvB,MAAM,IAAIlG,eACR,CAAC,gCAAgC,EAAEkE,OAAO,MAAM,EAAE,IAAI,CAAClD,YAAY,CAAC,GAAG,CAAC,GACtE,CAAC,WAAW,EAAEmE,WAAW,QAAQ,EAAExC,UAAUJ,OAAO,CAACC,eAAe,CAAC,CAAC,CAAC,GACvE,CAAC,OAAO,EAAEG,UAAUwD,MAAM,IAAI,WAAW;IAE/C;IAEA,MAAcpC,yBACZqC,IAAY,EACZnE,IAAkB,EAClBD,IAAW,EACXgC,QAAa,EACbX,QAA2C,EACZ;QAC/B,MAAMgD,iBAAiBlG,6BAA6B,IAAI,CAACoB,QAAQ,CAACC,GAAG,EAAE4E,MAAMpE;QAE7E,MAAM,EAAEsE,QAAQ,EAAErB,KAAK,EAAE,GAAGjB;QAC5B,IAAIX,UAAU;YACZA,SAAS;gBACPY,OAAO;gBACPjC,MAAMqE;gBACNnC,QAAQkC;gBACRnE,MAAMA;gBACNgD;gBACAjE,cAAc,IAAI,CAACA,YAAY;gBAC/BmD,iBAAiB,IAAI,CAAClD,OAAO;gBAC7BqF;YACF;QACF;QAEA,IAAI;YACF,MAAM,IAAI,CAAC7E,MAAM,CAACC,MAAM,CAAC6E,gBAAgB,CAAC;gBACxCtF,SAAS,IAAI,CAACA,OAAO;gBACrBO,KAAK,IAAI,CAACD,QAAQ,CAACC,GAAG;gBACtBO,cAAcqE;gBACdpE;gBACAG,SAASF;gBACT,GAAI+B,SAASiB,KAAK,IAAI;oBAAEA,OAAOjB,SAASiB,KAAK;gBAAC,CAAC;YACjD;QACF,EAAE,OAAO7C,KAAK;YACZ,IAAIA,eAAe3C,WAAW;gBAC5B,MAAMoG,cAAczD,IAAI0D,IAAI,CAAC,CAAC1D,MAAQA,eAAe1C;gBACrD,IAAI,CAACmB,MAAM,CAACkF,KAAK,CAAC,CAAC,aAAa,EAAEC,OAAOH,cAAc;YACzD;YACA,MAAM,IAAI7F,eACR,CAAC,gBAAgB,EAAEoG,KAAK,eAAe,EAAE,IAAI,CAACpF,YAAY,CAAC,gBAAgB,EAAEgB,KAAK,GAAG,EAAEI,KAAK;QAEhG;QAEA,MAAMgC,eAAejF,0BAA0B;YAC7CgD,SAASF;YACToC,OAAO/D,SAAS,IAAI,CAACc,MAAM,CAACkD,OAAO;YACnCC,kBAAkB1E,KAAK,IAAI,CAAC2E,aAAa;YACzC/C,QAAQ,IAAI,CAACA,MAAM,CAACC,MAAM;YAC1B,GAAG,IAAI,CAAC+C,kBAAkB,EAAE;YAC5BC,eAAe;gBACbC,oBAAoB,OAAO,EAAEC,aAAa,EAAE;oBAC1C,OAAOvF,0BAA0BuF,eAAe,IAAI,CAACnD,MAAM,CAACC,MAAM;gBACpE;YACF;QACF;QACA,MAAMwD,OAAOvF,mBAAmB;YAAE6B,KAAK,IAAI,CAACD,QAAQ,CAACC,GAAG;YAAEO,cAAcqE;YAAMpE;QAAK;QAEnF,IAAImD;QACJ,IAAI;YACF,oEAAoE;YACpE,qEAAqE;YACrE,gDAAgD;YAChD,MAAMC,QAAQ,MAAMnD,KAAKoD,QAAQ,CAAC;gBAAEC,KAAKjF,gBAAgBI;YAAwB;YACjF0E,aAAa,MAAMf,aAAamB,iBAAiB,CAAC;gBAChDC,UAAU,MAAMpB,aAAajC,OAAO,CAACsD,WAAW,CAAC;oBAC/C;wBACET,IAAI,IAAI,CAAC/D,OAAO;wBAChBgE,OAAOjB,SAASiB,KAAK,IAAI,EAAE;wBAC3BC;oBACF;iBACD;gBACDE;YACF;QACF,EAAE,OAAOhD,KAAK;YACZ,IAAIA,eAAe3C,WAAW;gBAC5B,MAAMoG,cAAczD,IAAI0D,IAAI,CAAC,CAAC1D,MAAQA,eAAe1C;gBACrD,IAAI,CAACmB,MAAM,CAACkF,KAAK,CAAC,CAAC,aAAa,EAAEC,OAAOH,cAAc;YACzD;YACA,MAAM,IAAI7F,eACR,CAAC,gBAAgB,EAAEoG,KAAK,eAAe,EAAE,IAAI,CAACpF,YAAY,CAAC,gBAAgB,EAAEgB,KAAK,GAAG,EAAEI,KAAK;QAEhG;QAEA,IAAIiB,UAAU;YACZA,SAAS;gBACPY,OAAO;gBACPjC,MAAMqE;gBACNlB;gBACAjB,QAAQkC;gBACRnE,MAAMA;gBACNgD;gBACAjE,cAAc,IAAI,CAACA,YAAY;gBAC/BmD,iBAAiB,IAAI,CAAClD,OAAO;gBAC7BqF;YACF;QACF;QAEA,IAAI3D;QACJ,IAAI;YACFA,YAAY,MAAMyB,aAAasB,2BAA2B,CAAC;gBACzDpD,MAAM6C;gBACNQ,SAASjF;YACX;QACF,EAAE,OAAO0B,KAAK;YACZ,uEAAuE;YACvE,0EAA0E;YAC1E,uEAAuE;YACvE,kEAAkE;YAClE,MAAM,IAAIpC,eACR,CAAC,gBAAgB,EAAEoG,KAAK,eAAe,EAAE,IAAI,CAACpF,YAAY,CAAC,YAAY,CAAC,GACtE,CAAC,uCAAuC,EAAEmE,WAAW,oBAAoB,CAAC,GAC1E,CAAC,uCAAuC,EAAE/C,KAAK;QAErD;QAEA,IAAI,CAACwD,qBAAqB,CAACjD,WAAWyD,MAAMjB;QAE5C,IAAI9B,UAAU;YACZA,SAAS;gBACPY,OAAO;gBACPjC,MAAMqE;gBACN1D;gBACAuB,QAAQkC;gBACRnE,MAAMA;gBACNgD;gBACAjE,cAAc,IAAI,CAACA,YAAY;gBAC/BmD,iBAAiB,IAAI,CAAClD,OAAO;gBAC7BqF;YACF;QACF;QAEA,OAAO3D;IACT;IAEA,MAAciB,6BACZwC,IAAY,EACZnE,IAAkB,EAClBD,IAAW,EACXgC,QAAa,EACb;QACA,IAAI;YACF,MAAM,IAAI,CAACvC,MAAM,CAACC,MAAM,CAAC6E,gBAAgB,CAAC;gBACxCtF,SAAS,IAAI,CAACA,OAAO;gBACrBO,KAAK,IAAI,CAACD,QAAQ,CAACC,GAAG;gBACtBO,cAAcqE;gBACdpE;gBACAG,SAASF,KAAKhB,OAAO;gBACrB,GAAI+C,SAASiB,KAAK,IAAI;oBAAEA,OAAOjB,SAASiB,KAAK;gBAAC,CAAC;YACjD;YACA,OAAO;QACT,EAAE,OAAO7C,KAAK;YACZ,MAAM,IAAInC,wBACR,CAAC,gCAAgC,EAAEmG,KAAK,eAAe,EAAE,IAAI,CAACpF,YAAY,CAAC,gBAAgB,EAAEgB,KAAK,GAAG,EAAEI,KAAK;QAEhH;IACF;IAEA,MAAcuB,qBACZyC,IAAY,EACZnE,IAA6B,EAC7BD,IAAW,EACXgC,QAAa,EACb;QACA,IAAI;YACF,MAAM,IAAI,CAACvC,MAAM,CAACC,MAAM,CAAC6E,gBAAgB,CAAC;gBACxCtF,SAAS,IAAI,CAACA,OAAO;gBACrBO,KAAK,IAAI,CAACD,QAAQ,CAACC,GAAG;gBACtBO,cAAcqE;gBACdpE;gBACAG,SAASF;gBACT,GAAI+B,SAASiB,KAAK,IAAI;oBAAEA,OAAOjB,SAASiB,KAAK;gBAAC,CAAC;YACjD;QACF,EAAE,OAAO7C,KAAK;YACZ,MAAM,IAAInC,wBACR,CAAC,gCAAgC,EAAEmG,KAAK,eAAe,EAAE,IAAI,CAACpF,YAAY,CAAC,gBAAgB,EAAEgB,KAAK,GAAG,EAAEI,KAAK;QAEhH;QACA,OAAO;IACT;IAEA,MAAc0B,iBACZsC,IAAY,EACZnE,IAA6B,EAC7BD,IAAW,EACXgC,QAAa,EACbX,QAA2C,EAC3CmD,YAAkB,EAClBC,gBAA0B,EAC1BC,aAAsB,EACtB;QACA,MAAMlF,MAAMgF,gBAAgB,IAAI,CAACjF,QAAQ,CAACC,GAAG;QAC7C,MAAM2C,kBAAkBsC,oBAAoB,IAAI,CAACxF,OAAO;QACxD,MAAMD,eAAe0F,iBAAiB,IAAI,CAAC1F,YAAY;QAEvD,MAAMqF,iBAAiBlG,6BAA6BqB,KAAK4E,MAAMpE;QAC/D,oCAAoC;QACpC,0BAA0B;QAC1B,oFAAoF;QACpF,qEAAqE;QACrE,wEAAwE;QACxE,0FAA0F;QAC1F,qDAAqD;QACrD,IAAI;QACJ,kFAAkF;QAClF,8GAA8G;QAC9G,oGAAoG;QACpG,6EAA6E;QAC7E,wCAAwC;QACxC,kBAAkB;QAClB,8BAA8B;QAC9B,4GAA4G;QAC5G,MAAM;QAEN,MAAM,EAAEsE,QAAQ,EAAErB,KAAK,EAAE,GAAGjB;QAC5B,gBAAgB;QAChB,IAAIX,UAAU;YACZA,SAAS;gBACPY,OAAO;gBACPjC,MAAMqE;gBACNnC,QAAQkC;gBACRnE;gBACAgD;gBACAjE;gBACAmD;gBACAmC;YACF;QACF;QAEA,IAAIjE;QACJ,IAAI;YACF,MAAM,EAAEsE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAClF,MAAM,CAACC,MAAM,CAAC6E,gBAAgB,CAAC;gBAC5DtF,SAASkD;gBACT3C;gBACAO,cAAcqE;gBACdpE;gBACAG,SAASF;gBACT,GAAI+B,SAASiB,KAAK,IAAI;oBAAEA,OAAOjB,SAASiB,KAAK;gBAAC,CAAC;YACjD;YAEA,uEAAuE;YACvE,0EAA0E;YAC1E,uEAAuE;YACvE,+DAA+D;YAC/D,IAAI2B,cAAkCN;YACtC,IAAIM,gBAAgBC,WAAW;gBAC7B,IAAI;oBACF,MAAMC,WAAW,MAAM,IAAI,CAACrF,MAAM,CAACC,MAAM,CAACqF,mBAAmB,CAAC;wBAC5D9F,SAASkD;wBACT3C;wBACAO,cAAcqE;wBACdpE;wBACAG,SAASF;wBACT,GAAI+B,SAASiB,KAAK,IAAI;4BAAEA,OAAOjB,SAASiB,KAAK;wBAAC,CAAC;oBACjD;oBACA2B,cAAcjG,oBAAoBmG,UAAU,IAAI,CAACjG,MAAM;gBACzD,EAAE,OAAOmG,QAAQ;oBACf,IAAI,CAACnG,MAAM,CAACC,IAAI,CACd,CAAC,yBAAyB,EAAEsF,KAAK,MAAM,EAAEpF,aAAa,UAAU,EAAEgG,OAAO,GAAG,CAAC,GAC3E,CAAC,gBAAgB,EAAExG,iBAAiB,mDAAmD,CAAC;oBAE5FoG,cAAcpG;gBAChB;YACF;YAEA6B,SAAS,MAAM,IAAI,CAACZ,MAAM,CAACG,MAAM,CAACqF,aAAa,CAAC;gBAC9C,GAAGN,OAAO;gBACVxE,SAASF;gBACTiF,KAAKN;YACP;QACF,EAAE,OAAOxE,KAAK;YACZ,IAAIA,eAAe3C,WAAW;gBAC5B,MAAMoG,cAAczD,IAAI0D,IAAI,CAAC,CAAC1D,MAAQA,eAAe1C;gBACrD,IAAI,CAACmB,MAAM,CAACkF,KAAK,CAAC,CAAC,aAAa,EAAEC,OAAOH,cAAc;YACzD;YACA,MAAM,IAAI7F,eACR,CAAC,gBAAgB,EAAEoG,KAAK,eAAe,EAAEpF,aAAa,gBAAgB,EAAEgB,KAAK,GAAG,EAAEI,KAAK;QAE3F;QAEA,IAAIiB,UAAU;YACZA,SAAS;gBACPY,OAAO;gBACPjC,MAAMqE;gBACNhE;gBACA6B,QAAQkC;gBACRnE;gBACAgD;gBACAjE;gBACAmD;gBACAmC;YACF;QACF;QACA,MAAM3D,YAAYvC,sBAAsB;YAAEiC;YAAQV,cAAc,IAAI,CAACF,MAAM,CAACC,MAAM;QAAC;QAEnF,IAAI2B,UAAU;YACZA,SAAS;gBACPY,OAAO;gBACPjC,MAAMqE;gBACN1D;gBACAuB,QAAQkC;gBACRnE;gBACAgD;gBACAjE;gBACAmD;gBACAmC;YACF;QACF;QAEA,OAAO3D;IACT;IAEA,MAAcS,sBACZJ,KAAuB,EACvBf,IAAa,EACb+B,QAAa,EACbX,QAA2C,EACd;QAC7B,MAAM8D,WAAiC,EAAE;QACzC,KAAK,MAAMrF,QAAQkB,MAAO;YACxBmE,SAASpC,IAAI,CACX,MAAM,IAAI,CAACjB,gBAAgB,CACzBhC,KAAKC,YAAY,EACjBE,MACAH,KAAKE,IAAI,EACTgC,UACAX,UACAvB,KAAKN,GAAG,EACRM,KAAKqC,eAAe,EACpBrC,KAAKd,YAAY;QAGvB;QACA,IAAImG,SAASC,MAAM,GAAG,GAAG,OAAOD,SAASE,GAAG;aACvC,MAAM,IAAIrH,eAAe,CAAC,+BAA+B,CAAC;IACjE;IAEA,MAAcwD,8BACZR,KAA+B,EAC/Bf,IAAa,EACb+B,QAAa,EACb;QACA,IAAI;YACF,MAAM,EAAEsD,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC7F,MAAM,CAACC,MAAM,CAAC6F,aAAa,CAAC;gBACzDvE;gBACAb,SAASF;YACX;YACA,IAAI,CAACpB,MAAM,CAACsC,KAAK,CAAC,CAAC,sBAAsB,EAAEmE,SAAS;YACpD,OAAO;QACT,EAAE,OAAOlF,KAAK;YACZ,IAAIA,eAAe3C,WAAW;gBAC5B,MAAMoG,cAAczD,IAAI0D,IAAI,CAAC,CAAC1D,MAAQA,eAAe1C;gBACrD,IAAI,CAACmB,MAAM,CAACkF,KAAK,CAAC,CAAC,aAAa,EAAEC,OAAOH,cAAc;YACzD;YACA,MAAM,IAAI7F,eAAe,CAAC,6BAA6B,EAAEoC,KAAK;QAChE;IACF;IAEA,MAAcqB,sCACZT,KAA+B,EAC/Bf,IAAkB,EAClB+B,QAAa,EACb;QACA,IAAI;YACF,MAAMI,eAAejF,0BAA0B;gBAC7CgD,SAASF;gBACToC,OAAO/D,SAAS,IAAI,CAACc,MAAM,CAACkD,OAAO;gBACnCC,kBAAkB1E,KAAK,IAAI,CAAC2E,aAAa;gBACzC/C,QAAQ,IAAI,CAACA,MAAM,CAACC,MAAM;gBAC1B,GAAG,IAAI,CAAC+C,kBAAkB,EAAE;gBAC5BC,eAAe;oBACbC,oBAAoB,OAAO,EAAEC,aAAa,EAAE;wBAC1C,OAAOvF,0BAA0BuF,eAAe,IAAI,CAACnD,MAAM,CAACC,MAAM;oBACpE;gBACF;YACF;YAEA,MAAMmD,eAAe,EAAE;YACvB,KAAK,MAAM/C,QAAQkB,MAAO;gBACxB6B,aAAaE,IAAI,CAAC;oBAChBC,IAAIlD,KAAKkD,EAAE;oBACXC,OAAOnD,KAAKmD,KAAK,IAAI,EAAE;oBACvBC,MAAMvF,mBAAmB;wBACvB6B,KAAKM,KAAKN,GAAG;wBACbO,cAAcD,KAAKC,YAAY;wBAC/BC,MAAMF,KAAKE,IAAI;oBACjB;gBACF;YACF;YAEA,gFAAgF;YAEhF,wFAAwF;YACxF,2EAA2E;YAC3E,yDAAyD;YACzD,0HAA0H;YAE1H,yBAAyB;YACzB,iDAAiD;YACjD,uDAAuD;YAEvD,8BAA8B;YAC9B,8DAA8D;YAC9D,0CAA0C;YAC1C,6GAA6G;YAC7G,KAAK;YAEL,MAAMoC,aAAaoD,oBAAoB,CAAC;gBACtChC,UAAU,MAAMpB,aAAajC,OAAO,CAACsD,WAAW,CAACZ;YACnD;YAEA,OAAO;QACT,EAAE,OAAOzC,KAAK;YACZ,IAAI,CAACvB,MAAM,CAACkF,KAAK,CAAC,CAAC,eAAe,EAAE0B,KAAKC,SAAS,CAACtF,KAAK,MAAM,IAAI;YAClE,IAAIA,eAAe3C,WAAW;gBAC5B,MAAMoG,cAAczD,IAAI0D,IAAI,CAAC,CAAC6B,IAAMA,aAAajI;gBACjD,IAAImG,aAAa;oBACf,IAAI,CAAChF,MAAM,CAACkF,KAAK,CAAC,CAAC,cAAc,EAAEC,OAAOH,cAAc;gBAC1D;YACF;YACA,MAAM,IAAI5F,wBAAwB,CAAC,8BAA8B,EAAEmC,KAAK;QAC1E;IACF;IAEQwF,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC1G,iBAAiB,EAAE;YAC3B,IAAI,CAACA,iBAAiB,GAAG9B,6BAA6B;gBACpDiF,OAAO/D,SAAS,IAAI,CAACc,MAAM,CAACkD,OAAO;gBACnCuD,WAAWhI,KAAK,IAAI,CAACiI,eAAe;YACtC;QACF;QACA,OAAO,IAAI,CAAC5G,iBAAiB;IAC/B;IAEA;;;;;;GAMC,GACD,AAAQuD,qBAAqB;QAC3B,IAAIjF,iBAAiB,OAAO,CAAC;QAC7B,MAAMuI,mBAAmB,IAAI,CAACH,oBAAoB;QAClD,OAAO;YACLI,WAAW;gBACTC,kBAAkB,CAACvD,gBACjBqD,iBAAiBG,oBAAoB,CAAC;wBAAExD;oBAAc;YAC1D;QACF;IACF;IAEUF,gBAAwB;QAChC,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,uDAAuD;QACvD,MAAM2D,YAAY,IAAI,CAAC/G,MAAM,CAACgH,gBAAgB;QAC9C,IAAI,CAACD,aAAa,CAAC3I,iBAAiB;YAClC,MAAM,IAAIQ,eACR;QAEJ;QACA,OAAOV,iBAAiB6I,aAAa,IAAI,IAAI,CAAC/G,MAAM,CAACkD,OAAO;IAC9D;IAEQwD,kBAA0B;QAChC,oEAAoE;QACpE,qEAAqE;QACrE,2DAA2D;QAC3D,MAAMK,YAAY,IAAI,CAAC/G,MAAM,CAACgH,gBAAgB;QAC9C,IAAI,CAACD,WAAW;YACd,MAAM,IAAInI,eACR;QAEJ;QACA,OAAOT,mBAAmB4I,WAAW,IAAI,CAAC/G,MAAM,CAACkD,OAAO;IAC1D;AACF"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Instantiable } from '../Instantiable.abstract.js';
|
|
2
2
|
export class ContractsApi extends Instantiable {
|
|
3
3
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
static async getInstance(config) {
|
|
4
|
+
* Return ContractsApi instance
|
|
5
|
+
* @param config
|
|
6
|
+
* @returns {@link ContractsApi}
|
|
7
|
+
*/ static async getInstance(config) {
|
|
9
8
|
const contractsApi = new ContractsApi();
|
|
10
9
|
contractsApi.setInstanceConfig(config);
|
|
11
10
|
return contractsApi;
|
|
@@ -21,53 +20,6 @@ export class ContractsApi extends Instantiable {
|
|
|
21
20
|
this.payAsYouGoTemplate = await (await import('./PayAsYouGoTemplate.js')).PayAsYouGoTemplate.getInstance(this.instanceConfig);
|
|
22
21
|
this.protocolStandardFees = await (await import('./ProtocolStandardFees.js')).ProtocolStandardFees.getInstance(this.instanceConfig);
|
|
23
22
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Access Manager smart contract instance.
|
|
26
|
-
*/
|
|
27
|
-
accessManager;
|
|
28
|
-
/**
|
|
29
|
-
* Nevermined Config smart contract instance.
|
|
30
|
-
*/
|
|
31
|
-
nvmConfig;
|
|
32
|
-
/**
|
|
33
|
-
* Asset registry smart contract instance.
|
|
34
|
-
*/
|
|
35
|
-
assetRegistry;
|
|
36
|
-
/**
|
|
37
|
-
* NFT1155Credits smart contract instance.
|
|
38
|
-
* Manages non-expirable credits using the ERC-1155 standard.
|
|
39
|
-
* Allows minting, burning and balance checking of credits.
|
|
40
|
-
*/
|
|
41
|
-
nft1155Credits;
|
|
42
|
-
/**
|
|
43
|
-
* NFT1155ExpirableCredits smart contract instance.
|
|
44
|
-
* Manages expirable credits using the ERC-1155 standard.
|
|
45
|
-
* Similar to NFT1155Credits but with an additional expiration mechanism.
|
|
46
|
-
* Credits minted through this contract will expire after a specified duration.
|
|
47
|
-
*/
|
|
48
|
-
nft1155ExpirableCredits;
|
|
49
|
-
/**
|
|
50
|
-
* FixedPaymentTemplate smart contract instance.
|
|
51
|
-
* Handles fixed payment agreements between parties.
|
|
52
|
-
* Used for creating and managing payment agreements with predefined terms.
|
|
53
|
-
*/
|
|
54
|
-
fixedPaymentTemplate;
|
|
55
|
-
/**
|
|
56
|
-
* FiatPaymentTemplate smart contract instance.
|
|
57
|
-
* Handles fiat payment agreements between parties (i.e Stripe).
|
|
58
|
-
* Used for creating and managing payment agreements with predefined terms.
|
|
59
|
-
*/
|
|
60
|
-
fiatPaymentTemplate;
|
|
61
|
-
/**
|
|
62
|
-
* PayAsYouGoTemplate smart contract instance.
|
|
63
|
-
* Handles pay as you go agreements between parties.
|
|
64
|
-
* Used for creating and managing payment agreements with predefined terms.
|
|
65
|
-
*/
|
|
66
|
-
payAsYouGoTemplate;
|
|
67
|
-
/**
|
|
68
|
-
* ProtocolStandardFees smart contract instance.
|
|
69
|
-
* It provides methods to calculate fees based on total amounts, price configurations, and credits configurations.
|
|
70
|
-
* This is the default fee controller for the protocol.
|
|
71
|
-
*/
|
|
72
|
-
protocolStandardFees;
|
|
73
23
|
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=ContractsApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/ContractsApi.ts"],"sourcesContent":["import { Instantiable, InstantiableConfig } from '../Instantiable.abstract.js'\nimport { AccessManager } from './AccessManager.js'\nimport { AssetRegistry } from './AssetRegistry.js'\nimport { FiatPaymentTemplate } from './FiatPaymentTemplate.js'\nimport { FixedPaymentTemplate } from './FixedPaymentTemplate.js'\nimport { PayAsYouGoTemplate } from './PayAsYouGoTemplate.js'\nimport { NFT1155Credits } from './NFT1155Credits.js'\nimport { NFT1155ExpirableCredits } from './NFT1155ExpirableCredits.js'\nimport { NeverminedConfig } from './NVMConfig.js'\nimport { ProtocolStandardFees } from './ProtocolStandardFees.js'\n\nexport class ContractsApi extends Instantiable {\n /**\n * Return ContractsApi instance\n * @param config\n * @returns {@link ContractsApi}\n */\n public static override async getInstance(config: InstantiableConfig): Promise<ContractsApi> {\n const contractsApi = new ContractsApi()\n contractsApi.setInstanceConfig(config)\n return contractsApi\n }\n\n public async init() {\n this.accessManager = await (\n await import('./AccessManager.js')\n ).AccessManager.getInstance(this.instanceConfig)\n this.nvmConfig = await (\n await import('./NVMConfig.js')\n ).NeverminedConfig.getInstance(this.instanceConfig)\n this.assetRegistry = await (\n await import('./AssetRegistry.js')\n ).AssetRegistry.getInstance(this.instanceConfig)\n this.nft1155Credits = await (\n await import('./NFT1155Credits.js')\n ).NFT1155Credits.getInstance(this.instanceConfig)\n this.nft1155ExpirableCredits = await (\n await import('./NFT1155ExpirableCredits.js')\n ).NFT1155ExpirableCredits.getInstance(this.instanceConfig)\n this.fixedPaymentTemplate = await (\n await import('./FixedPaymentTemplate.js')\n ).FixedPaymentTemplate.getInstance(this.instanceConfig)\n this.fiatPaymentTemplate = await (\n await import('./FiatPaymentTemplate.js')\n ).FiatPaymentTemplate.getInstance(this.instanceConfig)\n this.payAsYouGoTemplate = await (\n await import('./PayAsYouGoTemplate.js')\n ).PayAsYouGoTemplate.getInstance(this.instanceConfig)\n this.protocolStandardFees = await (\n await import('./ProtocolStandardFees.js')\n ).ProtocolStandardFees.getInstance(this.instanceConfig)\n }\n /**\n * Access Manager smart contract instance.\n */\n public accessManager!: AccessManager\n /**\n * Nevermined Config smart contract instance.\n */\n public nvmConfig!: NeverminedConfig\n\n /**\n * Asset registry smart contract instance.\n */\n public assetRegistry!: AssetRegistry\n\n /**\n * NFT1155Credits smart contract instance.\n * Manages non-expirable credits using the ERC-1155 standard.\n * Allows minting, burning and balance checking of credits.\n */\n public nft1155Credits!: NFT1155Credits\n\n /**\n * NFT1155ExpirableCredits smart contract instance.\n * Manages expirable credits using the ERC-1155 standard.\n * Similar to NFT1155Credits but with an additional expiration mechanism.\n * Credits minted through this contract will expire after a specified duration.\n */\n public nft1155ExpirableCredits!: NFT1155ExpirableCredits\n\n /**\n * FixedPaymentTemplate smart contract instance.\n * Handles fixed payment agreements between parties.\n * Used for creating and managing payment agreements with predefined terms.\n */\n public fixedPaymentTemplate!: FixedPaymentTemplate\n\n /**\n * FiatPaymentTemplate smart contract instance.\n * Handles fiat payment agreements between parties (i.e Stripe).\n * Used for creating and managing payment agreements with predefined terms.\n */\n public fiatPaymentTemplate!: FiatPaymentTemplate\n\n /**\n * PayAsYouGoTemplate smart contract instance.\n * Handles pay as you go agreements between parties.\n * Used for creating and managing payment agreements with predefined terms.\n */\n public payAsYouGoTemplate!: PayAsYouGoTemplate\n\n /**\n * ProtocolStandardFees smart contract instance.\n * It provides methods to calculate fees based on total amounts, price configurations, and credits configurations.\n * This is the default fee controller for the protocol.\n */\n public protocolStandardFees!: ProtocolStandardFees\n}\n"],"names":["Instantiable","ContractsApi","getInstance","config","contractsApi","setInstanceConfig","init","accessManager","AccessManager","instanceConfig","nvmConfig","NeverminedConfig","assetRegistry","AssetRegistry","nft1155Credits","NFT1155Credits","nft1155ExpirableCredits","NFT1155ExpirableCredits","fixedPaymentTemplate","FixedPaymentTemplate","fiatPaymentTemplate","FiatPaymentTemplate","payAsYouGoTemplate","PayAsYouGoTemplate","protocolStandardFees","ProtocolStandardFees"],"mappings":"AAAA,SAASA,YAAY,QAA4B,8BAA6B;AAW9E,OAAO,MAAMC,qBAAqBD;IAChC;;;;GAIC,GACD,aAA6BE,YAAYC,MAA0B,EAAyB;QAC1F,MAAMC,eAAe,IAAIH;QACzBG,aAAaC,iBAAiB,CAACF;QAC/B,OAAOC;IACT;IAEA,MAAaE,OAAO;QAClB,IAAI,CAACC,aAAa,GAAG,MAAM,AACzB,CAAA,MAAM,MAAM,CAAC,qBAAoB,EACjCC,aAAa,CAACN,WAAW,CAAC,IAAI,CAACO,cAAc;QAC/C,IAAI,CAACC,SAAS,GAAG,MAAM,AACrB,CAAA,MAAM,MAAM,CAAC,iBAAgB,EAC7BC,gBAAgB,CAACT,WAAW,CAAC,IAAI,CAACO,cAAc;QAClD,IAAI,CAACG,aAAa,GAAG,MAAM,AACzB,CAAA,MAAM,MAAM,CAAC,qBAAoB,EACjCC,aAAa,CAACX,WAAW,CAAC,IAAI,CAACO,cAAc;QAC/C,IAAI,CAACK,cAAc,GAAG,MAAM,AAC1B,CAAA,MAAM,MAAM,CAAC,sBAAqB,EAClCC,cAAc,CAACb,WAAW,CAAC,IAAI,CAACO,cAAc;QAChD,IAAI,CAACO,uBAAuB,GAAG,MAAM,AACnC,CAAA,MAAM,MAAM,CAAC,+BAA8B,EAC3CC,uBAAuB,CAACf,WAAW,CAAC,IAAI,CAACO,cAAc;QACzD,IAAI,CAACS,oBAAoB,GAAG,MAAM,AAChC,CAAA,MAAM,MAAM,CAAC,4BAA2B,EACxCC,oBAAoB,CAACjB,WAAW,CAAC,IAAI,CAACO,cAAc;QACtD,IAAI,CAACW,mBAAmB,GAAG,MAAM,AAC/B,CAAA,MAAM,MAAM,CAAC,2BAA0B,EACvCC,mBAAmB,CAACnB,WAAW,CAAC,IAAI,CAACO,cAAc;QACrD,IAAI,CAACa,kBAAkB,GAAG,MAAM,AAC9B,CAAA,MAAM,MAAM,CAAC,0BAAyB,EACtCC,kBAAkB,CAACrB,WAAW,CAAC,IAAI,CAACO,cAAc;QACpD,IAAI,CAACe,oBAAoB,GAAG,MAAM,AAChC,CAAA,MAAM,MAAM,CAAC,4BAA2B,EACxCC,oBAAoB,CAACvB,WAAW,CAAC,IAAI,CAACO,cAAc;IACxD;AAyDF"}
|
|
@@ -2,12 +2,6 @@ import { parseAbi } from 'viem';
|
|
|
2
2
|
import { lockPaymentConditionAddress, paymentsVaultAddress } from '../artifacts/generated.js';
|
|
3
3
|
import { ContractBase } from './ContractBase.js';
|
|
4
4
|
export class CryptoTemplateBase extends ContractBase {
|
|
5
|
-
TOKEN_APPROVE_ABI = parseAbi([
|
|
6
|
-
'function approve(address spender, uint256 amount) external returns (bool)',
|
|
7
|
-
]);
|
|
8
|
-
ERC20_TRANSFER_ABI = parseAbi([
|
|
9
|
-
'function transfer(address to, uint256 amount) external returns (bool)',
|
|
10
|
-
]);
|
|
11
5
|
async transferERC20(from, to, amount, erc20Address, txParams) {
|
|
12
6
|
// An EOA transferring its own ERC-20 does not need to approve itself —
|
|
13
7
|
// `approve` only gates third-party `transferFrom`. The previous
|
|
@@ -19,8 +13,11 @@ export class CryptoTemplateBase extends ContractBase {
|
|
|
19
13
|
contractName: 'ERC20',
|
|
20
14
|
abi: this.ERC20_TRANSFER_ABI,
|
|
21
15
|
functionName: 'transfer',
|
|
22
|
-
args: [
|
|
23
|
-
|
|
16
|
+
args: [
|
|
17
|
+
to,
|
|
18
|
+
amount
|
|
19
|
+
]
|
|
20
|
+
}
|
|
24
21
|
];
|
|
25
22
|
return await this.multicall(calls, from, txParams);
|
|
26
23
|
}
|
|
@@ -31,16 +28,31 @@ export class CryptoTemplateBase extends ContractBase {
|
|
|
31
28
|
contractName: 'ERC20',
|
|
32
29
|
abi: this.TOKEN_APPROVE_ABI,
|
|
33
30
|
functionName: 'approve',
|
|
34
|
-
args: [
|
|
31
|
+
args: [
|
|
32
|
+
lockPaymentConditionAddress,
|
|
33
|
+
amount
|
|
34
|
+
]
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
contractAddress: erc20Address,
|
|
38
38
|
contractName: 'ERC20',
|
|
39
39
|
abi: this.TOKEN_APPROVE_ABI,
|
|
40
40
|
functionName: 'approve',
|
|
41
|
-
args: [
|
|
42
|
-
|
|
41
|
+
args: [
|
|
42
|
+
paymentsVaultAddress,
|
|
43
|
+
amount
|
|
44
|
+
]
|
|
45
|
+
}
|
|
43
46
|
];
|
|
44
47
|
return await this.multicall(calls, owner, txParams);
|
|
45
48
|
}
|
|
49
|
+
constructor(...args){
|
|
50
|
+
super(...args), this.TOKEN_APPROVE_ABI = parseAbi([
|
|
51
|
+
'function approve(address spender, uint256 amount) external returns (bool)'
|
|
52
|
+
]), this.ERC20_TRANSFER_ABI = parseAbi([
|
|
53
|
+
'function transfer(address to, uint256 amount) external returns (bool)'
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
46
56
|
}
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=CryptoTemplateBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/CryptoTemplateBase.ts"],"sourcesContent":["import { Abi, Account, Address, parseAbi } from 'viem'\nimport { SmartAccount } from 'viem/account-abstraction'\nimport { lockPaymentConditionAddress, paymentsVaultAddress } from '../artifacts/generated.js'\nimport { TxParameters } from '../models/Transactions.js'\nimport { ContractBase, MulticallEntry } from './ContractBase.js'\n\nexport class CryptoTemplateBase extends ContractBase {\n protected TOKEN_APPROVE_ABI = parseAbi([\n 'function approve(address spender, uint256 amount) external returns (bool)',\n ]) as Abi\n\n protected ERC20_TRANSFER_ABI = parseAbi([\n 'function transfer(address to, uint256 amount) external returns (bool)',\n ]) as Abi\n\n public async transferERC20(\n from: Account | SmartAccount,\n to: Address,\n amount: bigint,\n erc20Address: Address,\n txParams?: TxParameters,\n ) {\n // An EOA transferring its own ERC-20 does not need to approve itself —\n // `approve` only gates third-party `transferFrom`. The previous\n // self-approve was a semantic no-op and doubled the gas-estimation\n // footprint, making this path sensitive to misbehaving testnet RPCs.\n const calls: MulticallEntry[] = [\n {\n contractAddress: erc20Address,\n contractName: 'ERC20',\n abi: this.ERC20_TRANSFER_ABI,\n functionName: 'transfer',\n args: [to, amount],\n },\n ]\n return await this.multicall(calls, from, txParams)\n }\n\n public async approveERC20(\n amount: bigint,\n erc20Address: Address,\n owner: Account | SmartAccount,\n txParams?: TxParameters,\n ) {\n const calls: MulticallEntry[] = [\n {\n contractAddress: erc20Address,\n contractName: 'ERC20',\n abi: this.TOKEN_APPROVE_ABI,\n functionName: 'approve',\n args: [lockPaymentConditionAddress, amount],\n },\n {\n contractAddress: erc20Address,\n contractName: 'ERC20',\n abi: this.TOKEN_APPROVE_ABI,\n functionName: 'approve',\n args: [paymentsVaultAddress, amount],\n },\n ]\n\n return await this.multicall(calls, owner, txParams)\n }\n}\n"],"names":["parseAbi","lockPaymentConditionAddress","paymentsVaultAddress","ContractBase","CryptoTemplateBase","transferERC20","from","to","amount","erc20Address","txParams","calls","contractAddress","contractName","abi","ERC20_TRANSFER_ABI","functionName","args","multicall","approveERC20","owner","TOKEN_APPROVE_ABI"],"mappings":"AAAA,SAAgCA,QAAQ,QAAQ,OAAM;AAEtD,SAASC,2BAA2B,EAAEC,oBAAoB,QAAQ,4BAA2B;AAE7F,SAASC,YAAY,QAAwB,oBAAmB;AAEhE,OAAO,MAAMC,2BAA2BD;IAStC,MAAaE,cACXC,IAA4B,EAC5BC,EAAW,EACXC,MAAc,EACdC,YAAqB,EACrBC,QAAuB,EACvB;QACA,uEAAuE;QACvE,gEAAgE;QAChE,mEAAmE;QACnE,qEAAqE;QACrE,MAAMC,QAA0B;YAC9B;gBACEC,iBAAiBH;gBACjBI,cAAc;gBACdC,KAAK,IAAI,CAACC,kBAAkB;gBAC5BC,cAAc;gBACdC,MAAM;oBAACV;oBAAIC;iBAAO;YACpB;SACD;QACD,OAAO,MAAM,IAAI,CAACU,SAAS,CAACP,OAAOL,MAAMI;IAC3C;IAEA,MAAaS,aACXX,MAAc,EACdC,YAAqB,EACrBW,KAA6B,EAC7BV,QAAuB,EACvB;QACA,MAAMC,QAA0B;YAC9B;gBACEC,iBAAiBH;gBACjBI,cAAc;gBACdC,KAAK,IAAI,CAACO,iBAAiB;gBAC3BL,cAAc;gBACdC,MAAM;oBAAChB;oBAA6BO;iBAAO;YAC7C;YACA;gBACEI,iBAAiBH;gBACjBI,cAAc;gBACdC,KAAK,IAAI,CAACO,iBAAiB;gBAC3BL,cAAc;gBACdC,MAAM;oBAACf;oBAAsBM;iBAAO;YACtC;SACD;QAED,OAAO,MAAM,IAAI,CAACU,SAAS,CAACP,OAAOS,OAAOV;IAC5C;;QAxDK,qBACKW,oBAAoBrB,SAAS;YACrC;SACD,QAESe,qBAAqBf,SAAS;YACtC;SACD;;AAkDH"}
|
|
@@ -9,6 +9,14 @@ export class FiatPaymentTemplate extends ContractBase {
|
|
|
9
9
|
}
|
|
10
10
|
async order(planId, creditsReceiver, owner, numberOfPurchases = 1n, txParams) {
|
|
11
11
|
const agreementIdSeed = generateZeroXId();
|
|
12
|
-
return this.send('order', owner, [
|
|
12
|
+
return this.send('order', owner, [
|
|
13
|
+
agreementIdSeed,
|
|
14
|
+
planId,
|
|
15
|
+
creditsReceiver,
|
|
16
|
+
numberOfPurchases,
|
|
17
|
+
[]
|
|
18
|
+
], txParams);
|
|
13
19
|
}
|
|
14
20
|
}
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=FiatPaymentTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/FiatPaymentTemplate.ts"],"sourcesContent":["import { Account, Address } from 'viem'\nimport { SmartAccount } from 'viem/account-abstraction'\nimport { fiatPaymentTemplateConfig } from '../artifacts/generated.js'\nimport { InstantiableConfig } from '../Instantiable.abstract.js'\nimport { TxParameters } from '../models/Transactions.js'\nimport { generateZeroXId } from '../utils/helpers.js'\nimport { ContractBase } from './ContractBase.js'\n\nexport class FiatPaymentTemplate extends ContractBase {\n public static override async getInstance(\n config: InstantiableConfig,\n ): Promise<FiatPaymentTemplate> {\n const fiatPaymentTemplate = new FiatPaymentTemplate(\n 'FiatPaymentTemplate',\n fiatPaymentTemplateConfig.address,\n )\n await fiatPaymentTemplate.init(config, fiatPaymentTemplateConfig)\n return fiatPaymentTemplate\n }\n\n public async order(\n planId: bigint,\n creditsReceiver: Address,\n owner: Account | SmartAccount,\n numberOfPurchases = 1n,\n txParams?: TxParameters,\n ) {\n const agreementIdSeed = generateZeroXId()\n return this.send(\n 'order',\n owner,\n [agreementIdSeed, planId, creditsReceiver, numberOfPurchases, []],\n txParams,\n )\n }\n}\n"],"names":["fiatPaymentTemplateConfig","generateZeroXId","ContractBase","FiatPaymentTemplate","getInstance","config","fiatPaymentTemplate","address","init","order","planId","creditsReceiver","owner","numberOfPurchases","txParams","agreementIdSeed","send"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ,4BAA2B;AAGrE,SAASC,eAAe,QAAQ,sBAAqB;AACrD,SAASC,YAAY,QAAQ,oBAAmB;AAEhD,OAAO,MAAMC,4BAA4BD;IACvC,aAA6BE,YAC3BC,MAA0B,EACI;QAC9B,MAAMC,sBAAsB,IAAIH,oBAC9B,uBACAH,0BAA0BO,OAAO;QAEnC,MAAMD,oBAAoBE,IAAI,CAACH,QAAQL;QACvC,OAAOM;IACT;IAEA,MAAaG,MACXC,MAAc,EACdC,eAAwB,EACxBC,KAA6B,EAC7BC,oBAAoB,EAAE,EACtBC,QAAuB,EACvB;QACA,MAAMC,kBAAkBd;QACxB,OAAO,IAAI,CAACe,IAAI,CACd,SACAJ,OACA;YAACG;YAAiBL;YAAQC;YAAiBE;YAAmB,EAAE;SAAC,EACjEC;IAEJ;AACF"}
|
|
@@ -13,6 +13,13 @@ export class FiatSettlementCondition extends ContractBase {
|
|
|
13
13
|
}
|
|
14
14
|
async order(planId, planReceiver, owner, txParams) {
|
|
15
15
|
const agreementIdSeed = generateZeroXId();
|
|
16
|
-
return this.send('order', owner, [
|
|
16
|
+
return this.send('order', owner, [
|
|
17
|
+
agreementIdSeed,
|
|
18
|
+
planId,
|
|
19
|
+
planReceiver,
|
|
20
|
+
[]
|
|
21
|
+
], txParams);
|
|
17
22
|
}
|
|
18
23
|
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=FiatSettlementCondition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/FiatSettlementCondition.ts"],"sourcesContent":["import { Account, Address } from 'viem'\nimport { SmartAccount } from 'viem/account-abstraction'\nimport { fiatSettlementConditionConfig } from '../artifacts/generated.js'\nimport { InstantiableConfig } from '../Instantiable.abstract.js'\nimport { ContractBase } from './ContractBase.js'\nimport { TxParameters } from '../models/Transactions.js'\nimport { generateZeroXId } from '../utils/helpers.js'\nimport { FIAT_SETTLEMENT_ROLE } from './Roles.js'\n\nexport class FiatSettlementCondition extends ContractBase {\n public static override async getInstance(\n config: InstantiableConfig,\n ): Promise<FiatSettlementCondition> {\n const fiatSettlementCondition = new FiatSettlementCondition(\n 'FiatSettlementCondition',\n fiatSettlementConditionConfig.address,\n )\n await fiatSettlementCondition.init(config, fiatSettlementConditionConfig)\n return fiatSettlementCondition\n }\n\n public async getFiatSettlementRole(): Promise<bigint> {\n return FIAT_SETTLEMENT_ROLE\n }\n\n public async order(\n planId: bigint,\n planReceiver: Address,\n owner: Account | SmartAccount,\n txParams?: TxParameters,\n ) {\n const agreementIdSeed = generateZeroXId()\n return this.send('order', owner, [agreementIdSeed, planId, planReceiver, []], txParams)\n }\n}\n"],"names":["fiatSettlementConditionConfig","ContractBase","generateZeroXId","FIAT_SETTLEMENT_ROLE","FiatSettlementCondition","getInstance","config","fiatSettlementCondition","address","init","getFiatSettlementRole","order","planId","planReceiver","owner","txParams","agreementIdSeed","send"],"mappings":"AAEA,SAASA,6BAA6B,QAAQ,4BAA2B;AAEzE,SAASC,YAAY,QAAQ,oBAAmB;AAEhD,SAASC,eAAe,QAAQ,sBAAqB;AACrD,SAASC,oBAAoB,QAAQ,aAAY;AAEjD,OAAO,MAAMC,gCAAgCH;IAC3C,aAA6BI,YAC3BC,MAA0B,EACQ;QAClC,MAAMC,0BAA0B,IAAIH,wBAClC,2BACAJ,8BAA8BQ,OAAO;QAEvC,MAAMD,wBAAwBE,IAAI,CAACH,QAAQN;QAC3C,OAAOO;IACT;IAEA,MAAaG,wBAAyC;QACpD,OAAOP;IACT;IAEA,MAAaQ,MACXC,MAAc,EACdC,YAAqB,EACrBC,KAA6B,EAC7BC,QAAuB,EACvB;QACA,MAAMC,kBAAkBd;QACxB,OAAO,IAAI,CAACe,IAAI,CAAC,SAASH,OAAO;YAACE;YAAiBJ;YAAQC;YAAc,EAAE;SAAC,EAAEE;IAChF;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { fixedPaymentTemplateConfig, lockPaymentConditionAddress, paymentsVaultAddress
|
|
1
|
+
import { fixedPaymentTemplateConfig, lockPaymentConditionAddress, paymentsVaultAddress } from '../artifacts/generated.js';
|
|
2
2
|
import { generateZeroXId } from '../utils/helpers.js';
|
|
3
3
|
import { CryptoTemplateBase } from './CryptoTemplateBase.js';
|
|
4
4
|
export class FixedPaymentTemplate extends CryptoTemplateBase {
|
|
@@ -9,7 +9,13 @@ export class FixedPaymentTemplate extends CryptoTemplateBase {
|
|
|
9
9
|
}
|
|
10
10
|
async order(planId, owner, creditsReceiver, numberOfPurchases = 1n, txParams) {
|
|
11
11
|
const agreementIdSeed = generateZeroXId();
|
|
12
|
-
return this.send('order', owner, [
|
|
12
|
+
return this.send('order', owner, [
|
|
13
|
+
agreementIdSeed,
|
|
14
|
+
planId,
|
|
15
|
+
creditsReceiver || owner.address,
|
|
16
|
+
numberOfPurchases,
|
|
17
|
+
[]
|
|
18
|
+
], txParams);
|
|
13
19
|
}
|
|
14
20
|
async simulateOrder(planId, owner, tokenAddress, totalAmount, creditsReceiver, numberOfPurchases = 1n, txParams) {
|
|
15
21
|
const agreementIdSeed = generateZeroXId();
|
|
@@ -18,20 +24,32 @@ export class FixedPaymentTemplate extends CryptoTemplateBase {
|
|
|
18
24
|
to: tokenAddress,
|
|
19
25
|
abi: this.TOKEN_APPROVE_ABI,
|
|
20
26
|
functionName: 'approve',
|
|
21
|
-
args: [
|
|
27
|
+
args: [
|
|
28
|
+
lockPaymentConditionAddress,
|
|
29
|
+
totalAmount
|
|
30
|
+
]
|
|
22
31
|
},
|
|
23
32
|
{
|
|
24
33
|
to: tokenAddress,
|
|
25
34
|
abi: this.TOKEN_APPROVE_ABI,
|
|
26
35
|
functionName: 'approve',
|
|
27
|
-
args: [
|
|
36
|
+
args: [
|
|
37
|
+
paymentsVaultAddress,
|
|
38
|
+
totalAmount
|
|
39
|
+
]
|
|
28
40
|
},
|
|
29
41
|
{
|
|
30
42
|
to: this.address,
|
|
31
43
|
abi: this.contract.abi,
|
|
32
44
|
functionName: 'order',
|
|
33
|
-
args: [
|
|
34
|
-
|
|
45
|
+
args: [
|
|
46
|
+
agreementIdSeed,
|
|
47
|
+
planId,
|
|
48
|
+
creditsReceiver || owner.address,
|
|
49
|
+
numberOfPurchases,
|
|
50
|
+
[]
|
|
51
|
+
]
|
|
52
|
+
}
|
|
35
53
|
];
|
|
36
54
|
return this.simulateMulticall(calls, owner, txParams);
|
|
37
55
|
}
|
|
@@ -42,21 +60,35 @@ export class FixedPaymentTemplate extends CryptoTemplateBase {
|
|
|
42
60
|
contractAddress: tokenAddress,
|
|
43
61
|
abi: this.TOKEN_APPROVE_ABI,
|
|
44
62
|
functionName: 'approve',
|
|
45
|
-
args: [
|
|
63
|
+
args: [
|
|
64
|
+
lockPaymentConditionAddress,
|
|
65
|
+
totalAmount
|
|
66
|
+
]
|
|
46
67
|
},
|
|
47
68
|
{
|
|
48
69
|
contractAddress: tokenAddress,
|
|
49
70
|
abi: this.TOKEN_APPROVE_ABI,
|
|
50
71
|
functionName: 'approve',
|
|
51
|
-
args: [
|
|
72
|
+
args: [
|
|
73
|
+
paymentsVaultAddress,
|
|
74
|
+
totalAmount
|
|
75
|
+
]
|
|
52
76
|
},
|
|
53
77
|
{
|
|
54
78
|
contractAddress: this.address,
|
|
55
79
|
abi: this.contract.abi,
|
|
56
80
|
functionName: 'order',
|
|
57
|
-
args: [
|
|
58
|
-
|
|
81
|
+
args: [
|
|
82
|
+
agreementIdSeed,
|
|
83
|
+
planId,
|
|
84
|
+
creditsReceiver || owner.address,
|
|
85
|
+
numberOfPurchases,
|
|
86
|
+
[]
|
|
87
|
+
]
|
|
88
|
+
}
|
|
59
89
|
];
|
|
60
90
|
return await this.multicall(calls, owner, txParams);
|
|
61
91
|
}
|
|
62
92
|
}
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=FixedPaymentTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/FixedPaymentTemplate.ts"],"sourcesContent":["import { Account, Address } from 'viem'\nimport { SmartAccount } from 'viem/account-abstraction'\nimport {\n fixedPaymentTemplateConfig,\n lockPaymentConditionAddress,\n paymentsVaultAddress,\n} from '../artifacts/generated.js'\nimport { InstantiableConfig } from '../Instantiable.abstract.js'\nimport { TxParameters } from '../models/Transactions.js'\nimport { generateZeroXId } from '../utils/helpers.js'\nimport { MulticallEntry, SimulateMulticallEntry } from './ContractBase.js'\nimport { CryptoTemplateBase } from './CryptoTemplateBase.js'\n\nexport class FixedPaymentTemplate extends CryptoTemplateBase {\n public static override async getInstance(\n config: InstantiableConfig,\n ): Promise<FixedPaymentTemplate> {\n const fixedPaymentTemplate = new FixedPaymentTemplate(\n 'FixedPaymentTemplate',\n fixedPaymentTemplateConfig.address,\n )\n await fixedPaymentTemplate.init(config, fixedPaymentTemplateConfig)\n return fixedPaymentTemplate\n }\n\n public async order(\n planId: bigint,\n owner: Account | SmartAccount,\n creditsReceiver?: Address,\n numberOfPurchases = 1n,\n txParams?: TxParameters,\n ) {\n const agreementIdSeed = generateZeroXId()\n return this.send(\n 'order',\n owner,\n [agreementIdSeed, planId, creditsReceiver || owner.address, numberOfPurchases, []],\n txParams,\n )\n }\n\n public async simulateOrder(\n planId: bigint,\n owner: Account | SmartAccount,\n tokenAddress: Address,\n totalAmount: bigint,\n creditsReceiver?: Address,\n numberOfPurchases = 1n,\n txParams?: TxParameters,\n ) {\n const agreementIdSeed = generateZeroXId()\n const calls: SimulateMulticallEntry[] = [\n {\n to: tokenAddress,\n abi: this.TOKEN_APPROVE_ABI,\n functionName: 'approve',\n args: [lockPaymentConditionAddress, totalAmount],\n },\n {\n to: tokenAddress,\n abi: this.TOKEN_APPROVE_ABI,\n functionName: 'approve',\n args: [paymentsVaultAddress, totalAmount],\n },\n {\n to: this.address,\n abi: this.contract.abi,\n functionName: 'order',\n args: [agreementIdSeed, planId, creditsReceiver || owner.address, numberOfPurchases, []],\n },\n ]\n return this.simulateMulticall(calls, owner, txParams)\n }\n\n public async orderWithApprovals(\n planId: bigint,\n totalAmount: bigint,\n tokenAddress: Address,\n owner: Account | SmartAccount,\n creditsReceiver?: Address,\n numberOfPurchases = 1n,\n txParams?: TxParameters,\n ) {\n const agreementIdSeed = generateZeroXId()\n\n const calls: MulticallEntry[] = [\n {\n contractAddress: tokenAddress,\n abi: this.TOKEN_APPROVE_ABI,\n functionName: 'approve',\n args: [lockPaymentConditionAddress, totalAmount],\n },\n {\n contractAddress: tokenAddress,\n abi: this.TOKEN_APPROVE_ABI,\n functionName: 'approve',\n args: [paymentsVaultAddress, totalAmount],\n },\n {\n contractAddress: this.address,\n abi: this.contract.abi,\n functionName: 'order',\n args: [agreementIdSeed, planId, creditsReceiver || owner.address, numberOfPurchases, []],\n },\n ]\n return await this.multicall(calls, owner, txParams)\n }\n}\n"],"names":["fixedPaymentTemplateConfig","lockPaymentConditionAddress","paymentsVaultAddress","generateZeroXId","CryptoTemplateBase","FixedPaymentTemplate","getInstance","config","fixedPaymentTemplate","address","init","order","planId","owner","creditsReceiver","numberOfPurchases","txParams","agreementIdSeed","send","simulateOrder","tokenAddress","totalAmount","calls","to","abi","TOKEN_APPROVE_ABI","functionName","args","contract","simulateMulticall","orderWithApprovals","contractAddress","multicall"],"mappings":"AAEA,SACEA,0BAA0B,EAC1BC,2BAA2B,EAC3BC,oBAAoB,QACf,4BAA2B;AAGlC,SAASC,eAAe,QAAQ,sBAAqB;AAErD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,MAAMC,6BAA6BD;IACxC,aAA6BE,YAC3BC,MAA0B,EACK;QAC/B,MAAMC,uBAAuB,IAAIH,qBAC/B,wBACAL,2BAA2BS,OAAO;QAEpC,MAAMD,qBAAqBE,IAAI,CAACH,QAAQP;QACxC,OAAOQ;IACT;IAEA,MAAaG,MACXC,MAAc,EACdC,KAA6B,EAC7BC,eAAyB,EACzBC,oBAAoB,EAAE,EACtBC,QAAuB,EACvB;QACA,MAAMC,kBAAkBd;QACxB,OAAO,IAAI,CAACe,IAAI,CACd,SACAL,OACA;YAACI;YAAiBL;YAAQE,mBAAmBD,MAAMJ,OAAO;YAAEM;YAAmB,EAAE;SAAC,EAClFC;IAEJ;IAEA,MAAaG,cACXP,MAAc,EACdC,KAA6B,EAC7BO,YAAqB,EACrBC,WAAmB,EACnBP,eAAyB,EACzBC,oBAAoB,EAAE,EACtBC,QAAuB,EACvB;QACA,MAAMC,kBAAkBd;QACxB,MAAMmB,QAAkC;YACtC;gBACEC,IAAIH;gBACJI,KAAK,IAAI,CAACC,iBAAiB;gBAC3BC,cAAc;gBACdC,MAAM;oBAAC1B;oBAA6BoB;iBAAY;YAClD;YACA;gBACEE,IAAIH;gBACJI,KAAK,IAAI,CAACC,iBAAiB;gBAC3BC,cAAc;gBACdC,MAAM;oBAACzB;oBAAsBmB;iBAAY;YAC3C;YACA;gBACEE,IAAI,IAAI,CAACd,OAAO;gBAChBe,KAAK,IAAI,CAACI,QAAQ,CAACJ,GAAG;gBACtBE,cAAc;gBACdC,MAAM;oBAACV;oBAAiBL;oBAAQE,mBAAmBD,MAAMJ,OAAO;oBAAEM;oBAAmB,EAAE;iBAAC;YAC1F;SACD;QACD,OAAO,IAAI,CAACc,iBAAiB,CAACP,OAAOT,OAAOG;IAC9C;IAEA,MAAac,mBACXlB,MAAc,EACdS,WAAmB,EACnBD,YAAqB,EACrBP,KAA6B,EAC7BC,eAAyB,EACzBC,oBAAoB,EAAE,EACtBC,QAAuB,EACvB;QACA,MAAMC,kBAAkBd;QAExB,MAAMmB,QAA0B;YAC9B;gBACES,iBAAiBX;gBACjBI,KAAK,IAAI,CAACC,iBAAiB;gBAC3BC,cAAc;gBACdC,MAAM;oBAAC1B;oBAA6BoB;iBAAY;YAClD;YACA;gBACEU,iBAAiBX;gBACjBI,KAAK,IAAI,CAACC,iBAAiB;gBAC3BC,cAAc;gBACdC,MAAM;oBAACzB;oBAAsBmB;iBAAY;YAC3C;YACA;gBACEU,iBAAiB,IAAI,CAACtB,OAAO;gBAC7Be,KAAK,IAAI,CAACI,QAAQ,CAACJ,GAAG;gBACtBE,cAAc;gBACdC,MAAM;oBAACV;oBAAiBL;oBAAQE,mBAAmBD,MAAMJ,OAAO;oBAAEM;oBAAmB,EAAE;iBAAC;YAC1F;SACD;QACD,OAAO,MAAM,IAAI,CAACiB,SAAS,CAACV,OAAOT,OAAOG;IAC5C;AACF"}
|
|
@@ -1,24 +1,60 @@
|
|
|
1
1
|
import { ContractBase } from './ContractBase.js';
|
|
2
2
|
export class NFT1155Base extends ContractBase {
|
|
3
3
|
async balanceOf(address, planId) {
|
|
4
|
-
return this.contract.read.balanceOf([
|
|
4
|
+
return this.contract.read.balanceOf([
|
|
5
|
+
address,
|
|
6
|
+
planId
|
|
7
|
+
]);
|
|
5
8
|
}
|
|
6
9
|
async balanceOfBatch(addresses, planIds) {
|
|
7
|
-
return this.contract.read.balanceOf([
|
|
10
|
+
return this.contract.read.balanceOf([
|
|
11
|
+
addresses,
|
|
12
|
+
planIds
|
|
13
|
+
]);
|
|
8
14
|
}
|
|
9
|
-
async mint({ to, planId, amount, data = '0x', owner, txParams
|
|
10
|
-
return this.send('mint', owner, [
|
|
15
|
+
async mint({ to, planId, amount, data = '0x', owner, txParams }) {
|
|
16
|
+
return this.send('mint', owner, [
|
|
17
|
+
to,
|
|
18
|
+
planId,
|
|
19
|
+
amount,
|
|
20
|
+
data
|
|
21
|
+
], txParams);
|
|
11
22
|
}
|
|
12
|
-
async mintBatch({ to, planIds, amounts, data = '0x', owner, txParams
|
|
13
|
-
return this.send('mintBatch', owner, [
|
|
23
|
+
async mintBatch({ to, planIds, amounts, data = '0x', owner, txParams }) {
|
|
24
|
+
return this.send('mintBatch', owner, [
|
|
25
|
+
to,
|
|
26
|
+
planIds,
|
|
27
|
+
amounts,
|
|
28
|
+
data
|
|
29
|
+
], txParams);
|
|
14
30
|
}
|
|
15
|
-
async simulateCreditsRedemption({ from, planId, amount, keyspace, signature, owner, txParams
|
|
16
|
-
return this.simulate('burn', owner, [
|
|
31
|
+
async simulateCreditsRedemption({ from, planId, amount, keyspace, signature, owner, txParams }) {
|
|
32
|
+
return this.simulate('burn', owner, [
|
|
33
|
+
from,
|
|
34
|
+
planId,
|
|
35
|
+
amount,
|
|
36
|
+
keyspace ?? 0n,
|
|
37
|
+
signature ?? '0x'
|
|
38
|
+
], txParams);
|
|
17
39
|
}
|
|
18
|
-
async burn({ from, planId, amount, keyspace, signature, owner, txParams
|
|
19
|
-
return this.send('burn', owner, [
|
|
40
|
+
async burn({ from, planId, amount, keyspace, signature, owner, txParams }) {
|
|
41
|
+
return this.send('burn', owner, [
|
|
42
|
+
from,
|
|
43
|
+
planId,
|
|
44
|
+
amount,
|
|
45
|
+
keyspace ?? 0n,
|
|
46
|
+
signature ?? '0x'
|
|
47
|
+
], txParams);
|
|
20
48
|
}
|
|
21
|
-
async burnBatch({ from, planIds, amounts, keyspace, signature, owner, txParams
|
|
22
|
-
return this.send('burnBatch', owner, [
|
|
49
|
+
async burnBatch({ from, planIds, amounts, keyspace, signature, owner, txParams }) {
|
|
50
|
+
return this.send('burnBatch', owner, [
|
|
51
|
+
from,
|
|
52
|
+
planIds,
|
|
53
|
+
amounts,
|
|
54
|
+
keyspace ?? 0n,
|
|
55
|
+
signature ?? '0x'
|
|
56
|
+
], txParams);
|
|
23
57
|
}
|
|
24
58
|
}
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=NFT1155Base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/NFT1155Base.ts"],"sourcesContent":["import { Account, Address } from 'viem'\nimport { SmartAccount } from 'viem/account-abstraction'\nimport { TxParameters } from '../models/Transactions.js'\nimport { ContractBase } from './ContractBase.js'\n\nexport abstract class NFT1155Base extends ContractBase {\n public async balanceOf(address: Address, planId: bigint): Promise<bigint> {\n return this.contract.read.balanceOf([address, planId])\n }\n\n public async balanceOfBatch(addresses: Address[], planIds: bigint[]): Promise<bigint[]> {\n return this.contract.read.balanceOf([addresses, planIds])\n }\n\n public async mint({\n to,\n planId,\n amount,\n data = '0x',\n owner,\n txParams,\n }: {\n to: Address\n planId: bigint\n amount: bigint\n owner: Account | SmartAccount\n data?: string\n txParams?: TxParameters\n }) {\n return this.send('mint', owner, [to, planId, amount, data], txParams)\n }\n\n public async mintBatch({\n to,\n planIds,\n amounts,\n data = '0x',\n owner,\n txParams,\n }: {\n to: Address[]\n planIds: bigint[]\n amounts: bigint[]\n owner: Account | SmartAccount\n data?: string\n txParams?: TxParameters\n }) {\n return this.send('mintBatch', owner, [to, planIds, amounts, data], txParams)\n }\n\n public async simulateCreditsRedemption({\n from,\n planId,\n amount,\n keyspace,\n signature,\n owner,\n txParams,\n }: {\n from: Address\n planId: bigint\n amount: bigint\n keyspace?: bigint\n signature?: string\n owner: Account | SmartAccount\n txParams?: TxParameters\n }) {\n return this.simulate(\n 'burn',\n owner,\n [from, planId, amount, keyspace ?? 0n, signature ?? '0x'],\n txParams,\n )\n }\n\n public async burn({\n from,\n planId,\n amount,\n keyspace,\n signature,\n owner,\n txParams,\n }: {\n from: Address\n planId: bigint\n amount: bigint\n keyspace?: bigint\n signature?: string\n owner: Account | SmartAccount\n txParams?: TxParameters\n }) {\n return this.send(\n 'burn',\n owner,\n [from, planId, amount, keyspace ?? 0n, signature ?? '0x'],\n txParams,\n )\n }\n\n public async burnBatch({\n from,\n planIds,\n amounts,\n keyspace,\n signature,\n owner,\n txParams,\n }: {\n from: Address\n planIds: bigint[]\n amounts: bigint[]\n keyspace?: bigint\n signature?: string\n owner: Account | SmartAccount\n txParams?: TxParameters\n }) {\n return this.send(\n 'burnBatch',\n owner,\n [from, planIds, amounts, keyspace ?? 0n, signature ?? '0x'],\n txParams,\n )\n }\n}\n"],"names":["ContractBase","NFT1155Base","balanceOf","address","planId","contract","read","balanceOfBatch","addresses","planIds","mint","to","amount","data","owner","txParams","send","mintBatch","amounts","simulateCreditsRedemption","from","keyspace","signature","simulate","burn","burnBatch"],"mappings":"AAGA,SAASA,YAAY,QAAQ,oBAAmB;AAEhD,OAAO,MAAeC,oBAAoBD;IACxC,MAAaE,UAAUC,OAAgB,EAAEC,MAAc,EAAmB;QACxE,OAAO,IAAI,CAACC,QAAQ,CAACC,IAAI,CAACJ,SAAS,CAAC;YAACC;YAASC;SAAO;IACvD;IAEA,MAAaG,eAAeC,SAAoB,EAAEC,OAAiB,EAAqB;QACtF,OAAO,IAAI,CAACJ,QAAQ,CAACC,IAAI,CAACJ,SAAS,CAAC;YAACM;YAAWC;SAAQ;IAC1D;IAEA,MAAaC,KAAK,EAChBC,EAAE,EACFP,MAAM,EACNQ,MAAM,EACNC,OAAO,IAAI,EACXC,KAAK,EACLC,QAAQ,EAQT,EAAE;QACD,OAAO,IAAI,CAACC,IAAI,CAAC,QAAQF,OAAO;YAACH;YAAIP;YAAQQ;YAAQC;SAAK,EAAEE;IAC9D;IAEA,MAAaE,UAAU,EACrBN,EAAE,EACFF,OAAO,EACPS,OAAO,EACPL,OAAO,IAAI,EACXC,KAAK,EACLC,QAAQ,EAQT,EAAE;QACD,OAAO,IAAI,CAACC,IAAI,CAAC,aAAaF,OAAO;YAACH;YAAIF;YAASS;YAASL;SAAK,EAAEE;IACrE;IAEA,MAAaI,0BAA0B,EACrCC,IAAI,EACJhB,MAAM,EACNQ,MAAM,EACNS,QAAQ,EACRC,SAAS,EACTR,KAAK,EACLC,QAAQ,EAST,EAAE;QACD,OAAO,IAAI,CAACQ,QAAQ,CAClB,QACAT,OACA;YAACM;YAAMhB;YAAQQ;YAAQS,YAAY,EAAE;YAAEC,aAAa;SAAK,EACzDP;IAEJ;IAEA,MAAaS,KAAK,EAChBJ,IAAI,EACJhB,MAAM,EACNQ,MAAM,EACNS,QAAQ,EACRC,SAAS,EACTR,KAAK,EACLC,QAAQ,EAST,EAAE;QACD,OAAO,IAAI,CAACC,IAAI,CACd,QACAF,OACA;YAACM;YAAMhB;YAAQQ;YAAQS,YAAY,EAAE;YAAEC,aAAa;SAAK,EACzDP;IAEJ;IAEA,MAAaU,UAAU,EACrBL,IAAI,EACJX,OAAO,EACPS,OAAO,EACPG,QAAQ,EACRC,SAAS,EACTR,KAAK,EACLC,QAAQ,EAST,EAAE;QACD,OAAO,IAAI,CAACC,IAAI,CACd,aACAF,OACA;YAACM;YAAMX;YAASS;YAASG,YAAY,EAAE;YAAEC,aAAa;SAAK,EAC3DP;IAEJ;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/NFT1155Credits.ts"],"sourcesContent":["import { nft1155CreditsConfig } from '../artifacts/generated.js'\nimport { InstantiableConfig } from '../Instantiable.abstract.js'\nimport { NFT1155Base } from './NFT1155Base.js'\n\nexport class NFT1155Credits extends NFT1155Base {\n public static override async getInstance(config: InstantiableConfig): Promise<NFT1155Credits> {\n const nft1155Credits = new NFT1155Credits('NFT1155Credits', nft1155CreditsConfig.address)\n await nft1155Credits.init(config, nft1155CreditsConfig)\n return nft1155Credits\n }\n}\n"],"names":["nft1155CreditsConfig","NFT1155Base","NFT1155Credits","getInstance","config","nft1155Credits","address","init"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,4BAA2B;AAEhE,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,uBAAuBD;IAClC,aAA6BE,YAAYC,MAA0B,EAA2B;QAC5F,MAAMC,iBAAiB,IAAIH,eAAe,kBAAkBF,qBAAqBM,OAAO;QACxF,MAAMD,eAAeE,IAAI,CAACH,QAAQJ;QAClC,OAAOK;IACT;AACF"}
|
|
@@ -6,13 +6,33 @@ export class NFT1155ExpirableCredits extends NFT1155Base {
|
|
|
6
6
|
await nft1155CreditsExpirable.init(config, nft1155ExpirableCreditsV2Config);
|
|
7
7
|
return nft1155CreditsExpirable;
|
|
8
8
|
}
|
|
9
|
-
async mint({ to, planId, amount, secsDuration = 0n, data = '0x', owner, txParams
|
|
10
|
-
return this.send('mint', owner, [
|
|
9
|
+
async mint({ to, planId, amount, secsDuration = 0n, data = '0x', owner, txParams }) {
|
|
10
|
+
return this.send('mint', owner, [
|
|
11
|
+
to,
|
|
12
|
+
planId,
|
|
13
|
+
amount,
|
|
14
|
+
secsDuration,
|
|
15
|
+
data
|
|
16
|
+
], txParams);
|
|
11
17
|
}
|
|
12
|
-
async mintBatch({ to, planIds, amounts, secsDuration, data = '0x', owner, txParams
|
|
13
|
-
return this.send('mintBatch', owner, [
|
|
18
|
+
async mintBatch({ to, planIds, amounts, secsDuration, data = '0x', owner, txParams }) {
|
|
19
|
+
return this.send('mintBatch', owner, [
|
|
20
|
+
to,
|
|
21
|
+
planIds,
|
|
22
|
+
amounts,
|
|
23
|
+
secsDuration,
|
|
24
|
+
data
|
|
25
|
+
], txParams);
|
|
14
26
|
}
|
|
15
|
-
async burn({ from, planId, amount, keyspace, signature, owner, txParams
|
|
16
|
-
return this.send('burn', owner, [
|
|
27
|
+
async burn({ from, planId, amount, keyspace, signature, owner, txParams }) {
|
|
28
|
+
return this.send('burn', owner, [
|
|
29
|
+
from,
|
|
30
|
+
planId,
|
|
31
|
+
amount,
|
|
32
|
+
keyspace ?? 0n,
|
|
33
|
+
signature ?? '0x'
|
|
34
|
+
], txParams);
|
|
17
35
|
}
|
|
18
36
|
}
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=NFT1155ExpirableCredits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/NFT1155ExpirableCredits.ts"],"sourcesContent":["import { Account, Address } from 'viem'\nimport { SmartAccount } from 'viem/account-abstraction'\nimport { nft1155ExpirableCreditsV2Config } from '../artifacts/generated.js'\nimport { InstantiableConfig } from '../Instantiable.abstract.js'\nimport { TxParameters } from '../models/Transactions.js'\nimport { NFT1155Base } from './NFT1155Base.js'\n\nexport class NFT1155ExpirableCredits extends NFT1155Base {\n public static override async getInstance(\n config: InstantiableConfig,\n ): Promise<NFT1155ExpirableCredits> {\n const nft1155CreditsExpirable = new NFT1155ExpirableCredits(\n 'NFT1155CreditsExpirableV2',\n nft1155ExpirableCreditsV2Config.address,\n )\n await nft1155CreditsExpirable.init(config, nft1155ExpirableCreditsV2Config)\n return nft1155CreditsExpirable\n }\n\n public override async mint({\n to,\n planId,\n amount,\n secsDuration = 0n,\n data = '0x',\n owner,\n txParams,\n }: {\n to: Address\n planId: bigint\n amount: bigint\n secsDuration?: bigint\n data?: string\n owner: Account | SmartAccount\n txParams?: TxParameters\n }) {\n return this.send('mint', owner, [to, planId, amount, secsDuration, data], txParams)\n }\n\n public override async mintBatch({\n to,\n planIds,\n amounts,\n secsDuration,\n data = '0x',\n owner,\n txParams,\n }: {\n to: Address[]\n planIds: bigint[]\n amounts: bigint[]\n secsDuration: bigint[]\n owner: Account | SmartAccount\n data?: string\n txParams?: TxParameters\n }) {\n return this.send('mintBatch', owner, [to, planIds, amounts, secsDuration, data], txParams)\n }\n\n public override async burn({\n from,\n planId,\n amount,\n keyspace,\n signature,\n owner,\n txParams,\n }: {\n from: Address\n planId: bigint\n amount: bigint\n keyspace?: bigint\n signature?: string\n owner: Account | SmartAccount\n txParams?: TxParameters\n }) {\n return this.send(\n 'burn',\n owner,\n [from, planId, amount, keyspace ?? 0n, signature ?? '0x'],\n txParams,\n )\n }\n}\n"],"names":["nft1155ExpirableCreditsV2Config","NFT1155Base","NFT1155ExpirableCredits","getInstance","config","nft1155CreditsExpirable","address","init","mint","to","planId","amount","secsDuration","data","owner","txParams","send","mintBatch","planIds","amounts","burn","from","keyspace","signature"],"mappings":"AAEA,SAASA,+BAA+B,QAAQ,4BAA2B;AAG3E,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,gCAAgCD;IAC3C,aAA6BE,YAC3BC,MAA0B,EACQ;QAClC,MAAMC,0BAA0B,IAAIH,wBAClC,6BACAF,gCAAgCM,OAAO;QAEzC,MAAMD,wBAAwBE,IAAI,CAACH,QAAQJ;QAC3C,OAAOK;IACT;IAEA,MAAsBG,KAAK,EACzBC,EAAE,EACFC,MAAM,EACNC,MAAM,EACNC,eAAe,EAAE,EACjBC,OAAO,IAAI,EACXC,KAAK,EACLC,QAAQ,EAST,EAAE;QACD,OAAO,IAAI,CAACC,IAAI,CAAC,QAAQF,OAAO;YAACL;YAAIC;YAAQC;YAAQC;YAAcC;SAAK,EAAEE;IAC5E;IAEA,MAAsBE,UAAU,EAC9BR,EAAE,EACFS,OAAO,EACPC,OAAO,EACPP,YAAY,EACZC,OAAO,IAAI,EACXC,KAAK,EACLC,QAAQ,EAST,EAAE;QACD,OAAO,IAAI,CAACC,IAAI,CAAC,aAAaF,OAAO;YAACL;YAAIS;YAASC;YAASP;YAAcC;SAAK,EAAEE;IACnF;IAEA,MAAsBK,KAAK,EACzBC,IAAI,EACJX,MAAM,EACNC,MAAM,EACNW,QAAQ,EACRC,SAAS,EACTT,KAAK,EACLC,QAAQ,EAST,EAAE;QACD,OAAO,IAAI,CAACC,IAAI,CACd,QACAF,OACA;YAACO;YAAMX;YAAQC;YAAQW,YAAY,EAAE;YAAEC,aAAa;SAAK,EACzDR;IAEJ;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/contracts/NVMConfig.ts"],"sourcesContent":["import { Address } from 'viem'\nimport { nvmConfigConfig } from '../artifacts/generated.js'\nimport { InstantiableConfig } from '../Instantiable.abstract.js'\nimport { ContractBase } from './ContractBase.js'\n\nexport class NeverminedConfig extends ContractBase {\n public static override async getInstance(config: InstantiableConfig): Promise<NeverminedConfig> {\n const neverminedConfig: NeverminedConfig = new NeverminedConfig(\n 'NeverminedConfig',\n nvmConfigConfig.address,\n )\n await neverminedConfig.init(config, nvmConfigConfig)\n return neverminedConfig\n }\n\n public async getFeeReceiver(): Promise<Address> {\n return this.contract.read.getFeeReceiver()\n }\n\n public async getDefaultFeeController(): Promise<Address> {\n return this.contract.read.getDefaultFeeController()\n }\n\n public async isFeeControllerAllowed(): Promise<boolean> {\n return this.contract.read.isFeeControllerAllowed()\n }\n}\n"],"names":["nvmConfigConfig","ContractBase","NeverminedConfig","getInstance","config","neverminedConfig","address","init","getFeeReceiver","contract","read","getDefaultFeeController","isFeeControllerAllowed"],"mappings":"AACA,SAASA,eAAe,QAAQ,4BAA2B;AAE3D,SAASC,YAAY,QAAQ,oBAAmB;AAEhD,OAAO,MAAMC,yBAAyBD;IACpC,aAA6BE,YAAYC,MAA0B,EAA6B;QAC9F,MAAMC,mBAAqC,IAAIH,iBAC7C,oBACAF,gBAAgBM,OAAO;QAEzB,MAAMD,iBAAiBE,IAAI,CAACH,QAAQJ;QACpC,OAAOK;IACT;IAEA,MAAaG,iBAAmC;QAC9C,OAAO,IAAI,CAACC,QAAQ,CAACC,IAAI,CAACF,cAAc;IAC1C;IAEA,MAAaG,0BAA4C;QACvD,OAAO,IAAI,CAACF,QAAQ,CAACC,IAAI,CAACC,uBAAuB;IACnD;IAEA,MAAaC,yBAA2C;QACtD,OAAO,IAAI,CAACH,QAAQ,CAACC,IAAI,CAACE,sBAAsB;IAClD;AACF"}
|