From 7cdda757d58cc659ab8f8a37b71f6d9bb1b0f623 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Wed, 8 Jul 2026 20:00:21 -0600 Subject: [PATCH 1/2] feat(payments): EventDriven per-job billing in the service's settlement asset (native or ERC20) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generalize EventDriven job payment so each service settles per-job in the token the customer selected at request time — native (address(0)) OR a manager-allowed ERC20 (e.g. Tempo PathUSD) — instead of a native-only hardcode. Reuses the already-token-aware PaymentLib.collectPayment and the token-parameterized distribution core; subscriptions already used ERC20. - ServicesRequests: relax EventDriven to allow naming a settlement token (drop the native-only revert; keep the no-upfront-amount rule), and validate a NON-native EventDriven token via the manager allow-list at request time (fail-closed: disallowed -> TokenNotAllowed). Native needs no gate (unchanged). - Base storage (TangleStorage): append mapping(uint64=>address) _serviceEventDrivenAsset after _managerHookGasLimit; shrink __gap 27->26. Additive only — StorageLayoutSnapshotTest tail pins (slots 88/89) hold. - TangleServicesFacet: pin the settlement asset at activation from the approved request's paymentToken. - JobsSubmission / JobsRFQ / Jobs(+Aggregation) facets: collect and distribute each job in _serviceEventDrivenAsset[serviceId]; re-gate the asset against the manager allow-list at collection time (fail-closed). - Add getServicePaymentAsset(uint64) view (router-served) + interface decl; document that the per-job rate is denominated in the settlement asset's smallest unit (setJobEventRates / getJobEventRate NatSpec). - Tests: new EventDrivenErc20Settlement suite (16) covering ERC20 happy path, native back-compat, fail-closed (disallowed token, native-value on ERC20 service, zero-value on native service, post-activation de-list), RFQ ERC20, 6-decimal token, and a fuzz; update the obsolete native-only Payments test to the new fail-closed contract. - Regenerate Rust bindings for the new view. --- Cargo.lock | 2 +- bindings/TNT_CORE_VERSION | 2 +- bindings/abi/ITangle.json | 2 +- bindings/abi/ITangleFull.json | 2 +- bindings/src/bindings/i_tangle.rs | 230 +++++++- bindings/src/bindings/i_tangle_full.rs | 230 +++++++- bindings/src/bindings/i_tangle_services.rs | 230 +++++++- src/TangleStorage.sol | 24 +- src/core/BlueprintsManage.sol | 5 + src/core/JobsRFQ.sol | 15 +- src/core/JobsSubmission.sol | 20 +- src/core/ServicesRequests.sol | 36 +- src/core/TangleCoreApi.sol | 16 + .../tangle/TangleJobsAggregationFacet.sol | 14 +- src/facets/tangle/TangleJobsFacet.sol | 16 +- src/facets/tangle/TangleServicesFacet.sol | 13 +- src/interfaces/ITangleBlueprints.sol | 8 + src/interfaces/ITangleServices.sol | 7 + test/tangle/EventDrivenErc20Settlement.t.sol | 518 ++++++++++++++++++ test/tangle/Payments.t.sol | 18 +- 20 files changed, 1357 insertions(+), 51 deletions(-) create mode 100644 test/tangle/EventDrivenErc20Settlement.t.sol diff --git a/Cargo.lock b/Cargo.lock index e2535dd2..8e6e7ad8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3351,7 +3351,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tnt-core-bindings" -version = "0.18.0" +version = "0.19.0" dependencies = [ "alloy", "alloy-contract", diff --git a/bindings/TNT_CORE_VERSION b/bindings/TNT_CORE_VERSION index 96d476a7..f70577bd 100644 --- a/bindings/TNT_CORE_VERSION +++ b/bindings/TNT_CORE_VERSION @@ -1 +1 @@ -691c7c7be8421cf58c5e4f681a3e2260fa0ee1fa \ No newline at end of file +f0bc9ca0e7a15efa2228e4da81f59c3d6f8f7644 \ No newline at end of file diff --git a/bindings/abi/ITangle.json b/bindings/abi/ITangle.json index 47c1d638..4cf93ae9 100644 --- a/bindings/abi/ITangle.json +++ b/bindings/abi/ITangle.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"sourceCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","operatorAckedCurrentSources(uint64,address)":"2dd20a75","pendingBlueprintOwner(uint64)":"204004d5","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceCount\",\"type\":\"uint256\"}],\"name\":\"BlueprintSourcesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0x13cf6b904bc920d883d242145153a59513e6523d596635842b60ecbb69fb0777\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5d0d50e2afea83b4d71e474e3216b59c044da9874e1fde0909131d80458238e\",\"dweb:/ipfs/Qmed77VfYZJtwCheCa8BWwAps3Fk2WMW71ALTYFdjT74ad\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xf297ff93d4ad5e424065eb1b3aaf75448755a23ba0de695842f91b3c2bf8b51c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0757b2279a7027d3654888adcac244f064cd6d545b7b45f1bde1d6c18ba2229\",\"dweb:/ipfs/QmbicDhW5keBd9ztqmNUwasoPVGyRPiRUvj6me7iaPT291\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680\",\"dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"sourceCount","type":"uint256","indexed":false}],"type":"event","name":"BlueprintSourcesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0x13cf6b904bc920d883d242145153a59513e6523d596635842b60ecbb69fb0777","urls":["bzz-raw://d5d0d50e2afea83b4d71e474e3216b59c044da9874e1fde0909131d80458238e","dweb:/ipfs/Qmed77VfYZJtwCheCa8BWwAps3Fk2WMW71ALTYFdjT74ad"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xf297ff93d4ad5e424065eb1b3aaf75448755a23ba0de695842f91b3c2bf8b51c","urls":["bzz-raw://f0757b2279a7027d3654888adcac244f064cd6d545b7b45f1bde1d6c18ba2229","dweb:/ipfs/QmbicDhW5keBd9ztqmNUwasoPVGyRPiRUvj6me7iaPT291"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8","urls":["bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680","dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file +{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"},{"name":"payment","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServicePaymentAsset","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServicePaymentAsset(uint64)":"fc99b3d3","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","operatorAckedCurrentSources(uint64,address)":"2dd20a75","pendingBlueprintOwner(uint64)":"204004d5","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServicePaymentAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getJobEventRate(uint64,uint8)\":{\"details\":\"The returned rate is in the settlement asset's smallest unit \\u2014 see `setJobEventRates` and `getServicePaymentAsset`.\"},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServicePaymentAsset(uint64)\":{\"details\":\"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit.\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"details\":\"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServicePaymentAsset(uint64)\":{\"notice\":\"Get a service's per-job (EventDriven) settlement asset.\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474\",\"dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4\",\"dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"},{"internalType":"uint256","name":"payment","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServicePaymentAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getJobEventRate(uint64,uint8)":{"details":"The returned rate is in the settlement asset's smallest unit — see `setJobEventRates` and `getServicePaymentAsset`."},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServicePaymentAsset(uint64)":{"details":"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit."},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setJobEventRates(uint64,uint8[],uint256[])":{"details":"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServicePaymentAsset(uint64)":{"notice":"Get a service's per-job (EventDriven) settlement asset."},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d","urls":["bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474","dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352","urls":["bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4","dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/bindings/abi/ITangleFull.json b/bindings/abi/ITangleFull.json index f805784c..bd8a9de1 100644 --- a/bindings/abi/ITangleFull.json +++ b/bindings/abi/ITangleFull.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"managerHookGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManagerHookGasLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"sourceCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","managerHookGasLimit()":"35ba86c3","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorAckedCurrentSources(uint64,address)":"2dd20a75","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingBlueprintOwner(uint64)":"204004d5","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setManagerHookGasLimit(uint256)":"e45b84d9","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":"45d8a0b3","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceCount\",\"type\":\"uint256\"}],\"name\":\"BlueprintSourcesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"managerHookGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setManagerHookGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"managerHookGasLimit()\":{\"notice\":\"The effective blueprint-manager hook gas budget\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setManagerHookGasLimit(uint256)\":{\"notice\":\"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0x13cf6b904bc920d883d242145153a59513e6523d596635842b60ecbb69fb0777\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5d0d50e2afea83b4d71e474e3216b59c044da9874e1fde0909131d80458238e\",\"dweb:/ipfs/Qmed77VfYZJtwCheCa8BWwAps3Fk2WMW71ALTYFdjT74ad\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xf297ff93d4ad5e424065eb1b3aaf75448755a23ba0de695842f91b3c2bf8b51c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0757b2279a7027d3654888adcac244f064cd6d545b7b45f1bde1d6c18ba2229\",\"dweb:/ipfs/QmbicDhW5keBd9ztqmNUwasoPVGyRPiRUvj6me7iaPT291\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680\",\"dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"sourceCount","type":"uint256","indexed":false}],"type":"event","name":"BlueprintSourcesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"managerHookGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setManagerHookGasLimit"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"claimDisputeBond()":{"details":"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"managerHookGasLimit()":{"notice":"The effective blueprint-manager hook gas budget"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setManagerHookGasLimit(uint256)":{"notice":"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0x13cf6b904bc920d883d242145153a59513e6523d596635842b60ecbb69fb0777","urls":["bzz-raw://d5d0d50e2afea83b4d71e474e3216b59c044da9874e1fde0909131d80458238e","dweb:/ipfs/Qmed77VfYZJtwCheCa8BWwAps3Fk2WMW71ALTYFdjT74ad"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xf297ff93d4ad5e424065eb1b3aaf75448755a23ba0de695842f91b3c2bf8b51c","urls":["bzz-raw://f0757b2279a7027d3654888adcac244f064cd6d545b7b45f1bde1d6c18ba2229","dweb:/ipfs/QmbicDhW5keBd9ztqmNUwasoPVGyRPiRUvj6me7iaPT291"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8","urls":["bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680","dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file +{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"},{"name":"payment","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServicePaymentAsset","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"managerHookGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManagerHookGasLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServicePaymentAsset(uint64)":"fc99b3d3","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","managerHookGasLimit()":"35ba86c3","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorAckedCurrentSources(uint64,address)":"2dd20a75","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingBlueprintOwner(uint64)":"204004d5","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setManagerHookGasLimit(uint256)":"e45b84d9","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":"45d8a0b3","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServicePaymentAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"managerHookGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setManagerHookGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getJobEventRate(uint64,uint8)\":{\"details\":\"The returned rate is in the settlement asset's smallest unit \\u2014 see `setJobEventRates` and `getServicePaymentAsset`.\"},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServicePaymentAsset(uint64)\":{\"details\":\"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit.\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"details\":\"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServicePaymentAsset(uint64)\":{\"notice\":\"Get a service's per-job (EventDriven) settlement asset.\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"managerHookGasLimit()\":{\"notice\":\"The effective blueprint-manager hook gas budget\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setManagerHookGasLimit(uint256)\":{\"notice\":\"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474\",\"dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4\",\"dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"},{"internalType":"uint256","name":"payment","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServicePaymentAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"managerHookGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setManagerHookGasLimit"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"claimDisputeBond()":{"details":"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getJobEventRate(uint64,uint8)":{"details":"The returned rate is in the settlement asset's smallest unit — see `setJobEventRates` and `getServicePaymentAsset`."},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServicePaymentAsset(uint64)":{"details":"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit."},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setJobEventRates(uint64,uint8[],uint256[])":{"details":"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals."},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServicePaymentAsset(uint64)":{"notice":"Get a service's per-job (EventDriven) settlement asset."},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"managerHookGasLimit()":{"notice":"The effective blueprint-manager hook gas budget"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setManagerHookGasLimit(uint256)":{"notice":"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d","urls":["bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474","dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352","urls":["bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4","dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/bindings/src/bindings/i_tangle.rs b/bindings/src/bindings/i_tangle.rs index 71a08861..e5c482b8 100644 --- a/bindings/src/bindings/i_tangle.rs +++ b/bindings/src/bindings/i_tangle.rs @@ -11470,6 +11470,7 @@ interface ITangle { function getServiceEscrow(uint64 serviceId) external view returns (PaymentLib.ServiceEscrow memory); function getServiceOperator(uint64 serviceId, address operator) external view returns (Types.ServiceOperator memory); function getServiceOperators(uint64 serviceId) external view returns (address[] memory); + function getServicePaymentAsset(uint64 serviceId) external view returns (address); function getServiceRequest(uint64 requestId) external view returns (Types.ServiceRequest memory); function getServiceRequestResourceRequirements(uint64 requestId) external view returns (Types.ResourceCommitment[] memory); function getServiceRequestSecurityCommitments(uint64 requestId, address operator) external view returns (Types.AssetSecurityCommitment[] memory); @@ -13719,6 +13720,25 @@ interface ITangle { ], "stateMutability": "view" }, + { + "type": "function", + "name": "getServicePaymentAsset", + "inputs": [ + { + "name": "serviceId", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getServiceRequest", @@ -27780,6 +27800,162 @@ function getServiceOperators(uint64 serviceId) external view returns (address[] }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `getServicePaymentAsset(uint64)` and selector `0xfc99b3d3`. +```solidity +function getServicePaymentAsset(uint64 serviceId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getServicePaymentAssetCall { + #[allow(missing_docs)] + pub serviceId: u64, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`getServicePaymentAsset(uint64)`](getServicePaymentAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getServicePaymentAssetReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getServicePaymentAssetCall) -> Self { + (value.serviceId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getServicePaymentAssetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { serviceId: tuple.0 } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getServicePaymentAssetReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getServicePaymentAssetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getServicePaymentAssetCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::Address; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getServicePaymentAsset(uint64)"; + const SELECTOR: [u8; 4] = [252u8, 153u8, 179u8, 211u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.serviceId), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + ( + ::tokenize( + ret, + ), + ) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: getServicePaymentAssetReturn = r.into(); + r._0 + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: getServicePaymentAssetReturn = r.into(); + r._0 + }) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Function with signature `getServiceRequest(uint64)` and selector `0x5f9b4dfa`. ```solidity function getServiceRequest(uint64 requestId) external view returns (Types.ServiceRequest memory); @@ -35925,6 +36101,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] getServiceOperators(getServiceOperatorsCall), #[allow(missing_docs)] + getServicePaymentAsset(getServicePaymentAssetCall), + #[allow(missing_docs)] getServiceRequest(getServiceRequestCall), #[allow(missing_docs)] getServiceRequestResourceRequirements(getServiceRequestResourceRequirementsCall), @@ -36122,6 +36300,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; [243u8, 47u8, 150u8, 115u8], [245u8, 171u8, 22u8, 204u8], [249u8, 51u8, 59u8, 177u8], + [252u8, 153u8, 179u8, 211u8], [252u8, 167u8, 141u8, 45u8], [255u8, 20u8, 169u8, 64u8], ]; @@ -36222,6 +36401,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(getOperatorPreferences), ::core::stringify!(rewardTokens), ::core::stringify!(getJobEventRate), + ::core::stringify!(getServicePaymentAsset), ::core::stringify!(getJobQuotedPrice), ::core::stringify!(blueprintMasterRevision), ]; @@ -36322,6 +36502,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ]; @@ -36350,7 +36531,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; impl alloy_sol_types::SolInterface for ITangleCalls { const NAME: &'static str = "ITangleCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 97usize; + const COUNT: usize = 98usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -36504,6 +36685,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::getServiceOperators(_) => { ::SELECTOR } + Self::getServicePaymentAsset(_) => { + ::SELECTOR + } Self::getServiceRequest(_) => { ::SELECTOR } @@ -37693,6 +37877,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getJobEventRate }, + { + fn getServicePaymentAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleCalls::getServicePaymentAsset) + } + getServicePaymentAsset + }, { fn getJobQuotedPrice( data: &[u8], @@ -38770,6 +38965,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getJobEventRate }, + { + fn getServicePaymentAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleCalls::getServicePaymentAsset) + } + getServicePaymentAsset + }, { fn getJobQuotedPrice( data: &[u8], @@ -39048,6 +39254,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; inner, ) } + Self::getServicePaymentAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getServiceRequest(inner) => { ::abi_encoded_size( inner, @@ -39586,6 +39797,12 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; out, ) } + Self::getServicePaymentAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getServiceRequest(inner) => { ::abi_encode_raw( inner, @@ -41307,6 +41524,17 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`getServicePaymentAsset`] function. + pub fn getServicePaymentAsset( + &self, + serviceId: u64, + ) -> alloy_contract::SolCallBuilder<&P, getServicePaymentAssetCall, N> { + self.call_builder( + &getServicePaymentAssetCall { + serviceId, + }, + ) + } ///Creates a new call builder for the [`getServiceRequest`] function. pub fn getServiceRequest( &self, diff --git a/bindings/src/bindings/i_tangle_full.rs b/bindings/src/bindings/i_tangle_full.rs index e32d52c3..077166a3 100644 --- a/bindings/src/bindings/i_tangle_full.rs +++ b/bindings/src/bindings/i_tangle_full.rs @@ -12857,6 +12857,7 @@ interface ITangleFull { function getServiceEscrow(uint64 serviceId) external view returns (PaymentLib.ServiceEscrow memory); function getServiceOperator(uint64 serviceId, address operator) external view returns (Types.ServiceOperator memory); function getServiceOperators(uint64 serviceId) external view returns (address[] memory); + function getServicePaymentAsset(uint64 serviceId) external view returns (address); function getServiceRequest(uint64 requestId) external view returns (Types.ServiceRequest memory); function getServiceRequestResourceRequirements(uint64 requestId) external view returns (Types.ResourceCommitment[] memory); function getServiceRequestSecurityCommitments(uint64 requestId, address operator) external view returns (Types.AssetSecurityCommitment[] memory); @@ -15262,6 +15263,25 @@ interface ITangleFull { ], "stateMutability": "view" }, + { + "type": "function", + "name": "getServicePaymentAsset", + "inputs": [ + { + "name": "serviceId", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getServiceRequest", @@ -31927,6 +31947,162 @@ function getServiceOperators(uint64 serviceId) external view returns (address[] }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `getServicePaymentAsset(uint64)` and selector `0xfc99b3d3`. +```solidity +function getServicePaymentAsset(uint64 serviceId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getServicePaymentAssetCall { + #[allow(missing_docs)] + pub serviceId: u64, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`getServicePaymentAsset(uint64)`](getServicePaymentAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getServicePaymentAssetReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getServicePaymentAssetCall) -> Self { + (value.serviceId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getServicePaymentAssetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { serviceId: tuple.0 } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getServicePaymentAssetReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getServicePaymentAssetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getServicePaymentAssetCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::Address; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getServicePaymentAsset(uint64)"; + const SELECTOR: [u8; 4] = [252u8, 153u8, 179u8, 211u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.serviceId), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + ( + ::tokenize( + ret, + ), + ) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: getServicePaymentAssetReturn = r.into(); + r._0 + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: getServicePaymentAssetReturn = r.into(); + r._0 + }) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Function with signature `getServiceRequest(uint64)` and selector `0x5f9b4dfa`. ```solidity function getServiceRequest(uint64 requestId) external view returns (Types.ServiceRequest memory); @@ -45095,6 +45271,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] getServiceOperators(getServiceOperatorsCall), #[allow(missing_docs)] + getServicePaymentAsset(getServicePaymentAssetCall), + #[allow(missing_docs)] getServiceRequest(getServiceRequestCall), #[allow(missing_docs)] getServiceRequestResourceRequirements(getServiceRequestResourceRequirementsCall), @@ -45398,6 +45576,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; [245u8, 171u8, 22u8, 204u8], [249u8, 51u8, 59u8, 177u8], [251u8, 204u8, 123u8, 61u8], + [252u8, 153u8, 179u8, 211u8], [252u8, 167u8, 141u8, 45u8], [255u8, 20u8, 169u8, 64u8], ]; @@ -45538,6 +45717,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(rewardTokens), ::core::stringify!(getJobEventRate), ::core::stringify!(setServiceFeeDistributor), + ::core::stringify!(getServicePaymentAsset), ::core::stringify!(getJobQuotedPrice), ::core::stringify!(blueprintMasterRevision), ]; @@ -45678,6 +45858,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ]; @@ -45706,7 +45887,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; impl alloy_sol_types::SolInterface for ITangleFullCalls { const NAME: &'static str = "ITangleFullCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 137usize; + const COUNT: usize = 138usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -45881,6 +46062,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::getServiceOperators(_) => { ::SELECTOR } + Self::getServicePaymentAsset(_) => { + ::SELECTOR + } Self::getServiceRequest(_) => { ::SELECTOR } @@ -47603,6 +47787,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } setServiceFeeDistributor }, + { + fn getServicePaymentAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleFullCalls::getServicePaymentAsset) + } + getServicePaymentAsset + }, { fn getJobQuotedPrice( data: &[u8], @@ -49128,6 +49323,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } setServiceFeeDistributor }, + { + fn getServicePaymentAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleFullCalls::getServicePaymentAsset) + } + getServicePaymentAsset + }, { fn getJobQuotedPrice( data: &[u8], @@ -49441,6 +49647,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; inner, ) } + Self::getServicePaymentAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getServiceRequest(inner) => { ::abi_encoded_size( inner, @@ -50176,6 +50387,12 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; out, ) } + Self::getServicePaymentAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getServiceRequest(inner) => { ::abi_encode_raw( inner, @@ -52261,6 +52478,17 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`getServicePaymentAsset`] function. + pub fn getServicePaymentAsset( + &self, + serviceId: u64, + ) -> alloy_contract::SolCallBuilder<&P, getServicePaymentAssetCall, N> { + self.call_builder( + &getServicePaymentAssetCall { + serviceId, + }, + ) + } ///Creates a new call builder for the [`getServiceRequest`] function. pub fn getServiceRequest( &self, diff --git a/bindings/src/bindings/i_tangle_services.rs b/bindings/src/bindings/i_tangle_services.rs index 4a29627a..83ed11fd 100644 --- a/bindings/src/bindings/i_tangle_services.rs +++ b/bindings/src/bindings/i_tangle_services.rs @@ -5850,6 +5850,7 @@ interface ITangleServices { function getServiceEscrow(uint64 serviceId) external view returns (PaymentLib.ServiceEscrow memory); function getServiceOperator(uint64 serviceId, address operator) external view returns (Types.ServiceOperator memory); function getServiceOperators(uint64 serviceId) external view returns (address[] memory); + function getServicePaymentAsset(uint64 serviceId) external view returns (address); function getServiceRequest(uint64 requestId) external view returns (Types.ServiceRequest memory); function getServiceRequestResourceRequirements(uint64 requestId) external view returns (Types.ResourceCommitment[] memory); function getServiceRequestSecurityCommitments(uint64 requestId, address operator) external view returns (Types.AssetSecurityCommitment[] memory); @@ -6773,6 +6774,25 @@ interface ITangleServices { ], "stateMutability": "view" }, + { + "type": "function", + "name": "getServicePaymentAsset", + "inputs": [ + { + "name": "serviceId", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getServiceRequest", @@ -12771,6 +12791,162 @@ function getServiceOperators(uint64 serviceId) external view returns (address[] }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `getServicePaymentAsset(uint64)` and selector `0xfc99b3d3`. +```solidity +function getServicePaymentAsset(uint64 serviceId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getServicePaymentAssetCall { + #[allow(missing_docs)] + pub serviceId: u64, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`getServicePaymentAsset(uint64)`](getServicePaymentAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getServicePaymentAssetReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getServicePaymentAssetCall) -> Self { + (value.serviceId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getServicePaymentAssetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { serviceId: tuple.0 } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getServicePaymentAssetReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getServicePaymentAssetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getServicePaymentAssetCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::Address; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getServicePaymentAsset(uint64)"; + const SELECTOR: [u8; 4] = [252u8, 153u8, 179u8, 211u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.serviceId), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + ( + ::tokenize( + ret, + ), + ) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: getServicePaymentAssetReturn = r.into(); + r._0 + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: getServicePaymentAssetReturn = r.into(); + r._0 + }) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Function with signature `getServiceRequest(uint64)` and selector `0x5f9b4dfa`. ```solidity function getServiceRequest(uint64 requestId) external view returns (Types.ServiceRequest memory); @@ -17260,6 +17436,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] getServiceOperators(getServiceOperatorsCall), #[allow(missing_docs)] + getServicePaymentAsset(getServicePaymentAssetCall), + #[allow(missing_docs)] getServiceRequest(getServiceRequestCall), #[allow(missing_docs)] getServiceRequestResourceRequirements(getServiceRequestResourceRequirementsCall), @@ -17368,6 +17546,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; [228u8, 192u8, 183u8, 86u8], [229u8, 247u8, 151u8, 242u8], [235u8, 140u8, 59u8, 205u8], + [252u8, 153u8, 179u8, 211u8], ]; /// The names of the variants in the same order as `SELECTORS`. pub const VARIANT_NAMES: &'static [&'static str] = &[ @@ -17419,6 +17598,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(getServiceResourceCommitmentHash), ::core::stringify!(getServiceRequestSecurityRequirements), ::core::stringify!(getServiceEscrow), + ::core::stringify!(getServicePaymentAsset), ]; /// The signatures in the same order as `SELECTORS`. pub const SIGNATURES: &'static [&'static str] = &[ @@ -17470,6 +17650,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ]; /// Returns the signature for the given selector, if known. #[inline] @@ -17496,7 +17677,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; impl alloy_sol_types::SolInterface for ITangleServicesCalls { const NAME: &'static str = "ITangleServicesCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 48usize; + const COUNT: usize = 49usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -17566,6 +17747,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::getServiceOperators(_) => { ::SELECTOR } + Self::getServicePaymentAsset(_) => { + ::SELECTOR + } Self::getServiceRequest(_) => { ::SELECTOR } @@ -18195,6 +18379,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getServiceEscrow }, + { + fn getServicePaymentAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleServicesCalls::getServicePaymentAsset) + } + getServicePaymentAsset + }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { return Err( @@ -18749,6 +18944,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getServiceEscrow }, + { + fn getServicePaymentAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleServicesCalls::getServicePaymentAsset) + } + getServicePaymentAsset + }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { return Err( @@ -18867,6 +19073,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; inner, ) } + Self::getServicePaymentAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getServiceRequest(inner) => { ::abi_encoded_size( inner, @@ -19134,6 +19345,12 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; out, ) } + Self::getServicePaymentAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getServiceRequest(inner) => { ::abi_encode_raw( inner, @@ -20008,6 +20225,17 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`getServicePaymentAsset`] function. + pub fn getServicePaymentAsset( + &self, + serviceId: u64, + ) -> alloy_contract::SolCallBuilder<&P, getServicePaymentAssetCall, N> { + self.call_builder( + &getServicePaymentAssetCall { + serviceId, + }, + ) + } ///Creates a new call builder for the [`getServiceRequest`] function. pub fn getServiceRequest( &self, diff --git a/src/TangleStorage.sol b/src/TangleStorage.sol index 39590183..4802a35e 100644 --- a/src/TangleStorage.sol +++ b/src/TangleStorage.sol @@ -541,14 +541,32 @@ abstract contract TangleStorage { /// hook clears; other chains keep the tight 500k DoS bound. Bounded either way. uint256 internal _managerHookGasLimit; + // ═══════════════════════════════════════════════════════════════════════════ + // EVENT-DRIVEN SETTLEMENT ASSET (appended 2026-07-08) + // ═══════════════════════════════════════════════════════════════════════════ + // Appended after `_managerHookGasLimit` (never inserted mid layout); the reserved + // gap below is shrunk by one to preserve total storage size for upgrade safety. + + /// @notice Service ID => EventDriven settlement asset. `address(0)` = native. + /// @dev Pinned once at activation from the approved request's `paymentToken` + /// (`TangleServicesFacet._handleInitialPayments`). Read by the per-job + /// collection/distribution paths (`JobsSubmission._collectJobPaymentIfNeeded`, + /// the Jobs/RFQ distribute overrides) so per-job billing settles in the + /// currency the customer selected at request time — native OR a + /// manager-allowed ERC20 (e.g. Tempo PathUSD) — instead of a native-only + /// hardcode. Only written for EventDriven services; other pricing models + /// leave it at the `address(0)` default, which is also the correct native + /// sentinel, so a stale read can never misroute a non-EventDriven payment. + mapping(uint64 => address) internal _serviceEventDrivenAsset; + // ═══════════════════════════════════════════════════════════════════════════ // RESERVED STORAGE GAP // ═══════════════════════════════════════════════════════════════════════════ - /// @dev Reserved storage slots for future appends. __gap size 27, occupying slots - /// 91..117 (the sequential layout ends at _managerHookGasLimit in slot 90 — + /// @dev Reserved storage slots for future appends. __gap size 26, occupying slots + /// 92..117 (the sequential layout ends at _serviceEventDrivenAsset in slot 91 — /// verify with `forge inspect Tangle storage-layout`; the tail slots are pinned /// by StorageLayoutSnapshotTest). Appending a field consumes gap slots /// one-for-one: shrink this array by the field's slot count in the same change. - uint256[27] private __gap; + uint256[26] private __gap; } diff --git a/src/core/BlueprintsManage.sol b/src/core/BlueprintsManage.sol index 91a3a4dd..d73adf58 100644 --- a/src/core/BlueprintsManage.sol +++ b/src/core/BlueprintsManage.sol @@ -255,6 +255,11 @@ abstract contract BlueprintsManage is Base { // ═══════════════════════════════════════════════════════════════════════════ /// @notice Set event rate overrides for one or more job types in a blueprint + /// @dev Rates are denominated in the SETTLEMENT ASSET's smallest unit, NOT a fixed + /// 18-decimal scale. Each EventDriven service pins its settlement asset at + /// activation (see `getServicePaymentAsset`); a service that settles in a 6-decimal + /// token (e.g. Tempo PathUSD) will collect `rate` in 6-dec units. Set rates in the + /// decimals of the token your blueprint's services settle in. /// @param blueprintId The blueprint ID /// @param jobIndexes Array of job indexes /// @param rates Array of per-job event rates (0 to clear override and use blueprint default) diff --git a/src/core/JobsRFQ.sol b/src/core/JobsRFQ.sol index 510501a8..eebe3b4d 100644 --- a/src/core/JobsRFQ.sol +++ b/src/core/JobsRFQ.sol @@ -88,13 +88,20 @@ abstract contract JobsRFQ is Base { serviceId, jobIndex, quotes, effectiveMaxQuoteAge, msg.sender, inputsHash ); - if (totalPrice > 0 && !_isPaymentAssetAllowedByManager(bp.manager, serviceId, address(0))) { - revert Errors.TokenNotAllowed(address(0)); + // Settle the RFQ quote in the service's pinned EventDriven settlement asset + // (`address(0)` = native, which is also the default for any non-EventDriven service, + // preserving the prior native-only behavior). For an ERC20-settlement service the + // manager allow-list is re-checked here (fail-closed) and the quoted price is pulled + // via `transferFrom`; the matching distribution in `_distributeRFQJobPayment` pays out + // in the same asset. + address asset = _serviceEventDrivenAsset[serviceId]; + if (totalPrice > 0 && !_isPaymentAssetAllowedByManager(bp.manager, serviceId, asset)) { + revert Errors.TokenNotAllowed(asset); } // Collect payment - PaymentLib.collectPayment(address(0), totalPrice, msg.value); - _recordPayment(msg.sender, serviceId, address(0), totalPrice); + PaymentLib.collectPayment(asset, totalPrice, msg.value); + _recordPayment(msg.sender, serviceId, asset, totalPrice); // Create the job call callId = _serviceCallCount[serviceId]++; diff --git a/src/core/JobsSubmission.sol b/src/core/JobsSubmission.sol index 73ebe57d..74398784 100644 --- a/src/core/JobsSubmission.sol +++ b/src/core/JobsSubmission.sol @@ -170,13 +170,25 @@ abstract contract JobsSubmission is Base { { if (svc.pricing == Types.PricingModel.EventDriven) { uint256 perJob = _jobEventRates[svc.blueprintId][jobIndex]; + // The per-job rate is denominated in the SETTLEMENT ASSET's smallest unit + // (`_serviceEventDrivenAsset[serviceId]`; `address(0)` = native). A service that + // settles in a 6-decimal token (e.g. Tempo PathUSD) therefore carries a rate in + // 6-dec units, not 18. See `getServicePaymentAsset` / `setJobEventRates`. payment = perJob > 0 ? perJob : _blueprintConfigs[svc.blueprintId].eventRate; + address asset = _serviceEventDrivenAsset[serviceId]; address manager = _blueprints[svc.blueprintId].manager; - if (payment > 0 && !_isPaymentAssetAllowedByManager(manager, serviceId, address(0))) { - revert Errors.TokenNotAllowed(address(0)); + // Re-gate the settlement asset against the manager allow-list at collection time + // (fail-closed): for native this is the unchanged `address(0)` check; for an ERC20 + // it rejects a token the manager has since de-listed, even though it was allowed + // when the service was requested. + if (payment > 0 && !_isPaymentAssetAllowedByManager(manager, serviceId, asset)) { + revert Errors.TokenNotAllowed(asset); } - PaymentLib.collectPayment(address(0), payment, msgValue); - _recordPayment(payer, serviceId, address(0), payment); + // Native: `collectPayment` requires `msgValue == payment`. ERC20: it requires + // `msgValue == 0` and pulls `payment` via `transferFrom` (payer must have approved + // the Tangle), rejecting fee-on-transfer / rebasing tokens at ingress. + PaymentLib.collectPayment(asset, payment, msgValue); + _recordPayment(payer, serviceId, asset, payment); } } diff --git a/src/core/ServicesRequests.sol b/src/core/ServicesRequests.sol index 0a7ed082..828d58ed 100644 --- a/src/core/ServicesRequests.sol +++ b/src/core/ServicesRequests.sol @@ -208,7 +208,7 @@ abstract contract ServicesRequests is Base { _validateServiceTtl(ttl); BlueprintRequestData memory blueprintData = _loadBlueprintRequestData(blueprintId); - _validatePricingPaymentConsistency(blueprintData.pricing, paymentToken, paymentAmount); + _validatePricingPaymentConsistency(blueprintData.pricing, paymentAmount); uint64 requestContextId = _serviceRequestCount; _validateRequestPaymentAsset( @@ -249,28 +249,32 @@ abstract contract ServicesRequests is Base { if (manager == address(0)) { return; } - // Subscription requests must always validate the selected settlement token, even with zero initial deposit. - if (paymentAmount == 0 && pricing != Types.PricingModel.Subscription) return; + // Two zero-deposit cases still require settlement-token validation so a disallowed + // token can never be pinned onto a service that later bills in it: + // - Subscription: the escrow is funded by later top-ups in the selected token. + // - EventDriven with a NON-native token: per-job billing settles in that ERC20, + // so the token must clear the manager allow-list at request time (fail-closed). + // Native (`address(0)`) EventDriven needs no gate — native is the universally + // billable default and matches the prior behavior — so we skip the allow-list query + // rather than forcing native through a manager that may not whitelist `address(0)`. + bool eventDrivenErc20 = pricing == Types.PricingModel.EventDriven && paymentToken != address(0); + if (paymentAmount == 0 && pricing != Types.PricingModel.Subscription && !eventDrivenErc20) return; if (!_isPaymentAssetAllowedByManager(manager, requestContextId, paymentToken)) { revert Errors.TokenNotAllowed(paymentToken); } } - function _validatePricingPaymentConsistency( - Types.PricingModel pricing, - address paymentToken, - uint256 paymentAmount - ) - private - pure - { - // Event-driven services are funded by per-job `msg.value`, not by an upfront - // lump sum. Reject non-zero `paymentAmount` AT REQUEST TIME so the customer's - // funds aren't collected only to revert at activation — and so a tooling bug - // can't silently lock funds in the contract until expiry. + function _validatePricingPaymentConsistency(Types.PricingModel pricing, uint256 paymentAmount) private pure { + // Event-driven services are funded per-job (native `msg.value` OR a per-job ERC20 + // transfer), not by an upfront lump sum. Reject non-zero `paymentAmount` AT REQUEST + // TIME so the customer's funds aren't collected only to revert at activation — and + // so a tooling bug can't silently lock funds in the contract until expiry. The + // settlement token itself (native `address(0)` OR an ERC20 such as Tempo PathUSD) is + // permitted and pinned as the service's per-job settlement asset at activation; a + // NON-native token is gated by the manager allow-list in `_validateRequestPaymentAsset` + // (fail-closed: a disallowed token reverts `TokenNotAllowed` at request time). if (pricing == Types.PricingModel.EventDriven) { if (paymentAmount != 0) revert Errors.UpfrontPaymentNotAllowedForEventDriven(); - if (paymentToken != address(0)) revert Errors.InvalidPaymentToken(); } } diff --git a/src/core/TangleCoreApi.sol b/src/core/TangleCoreApi.sol index 4efb57f8..0f7386b7 100644 --- a/src/core/TangleCoreApi.sol +++ b/src/core/TangleCoreApi.sol @@ -384,6 +384,22 @@ abstract contract TangleCoreApi is Base { return _services[id]; } + /// @notice Get a service's per-job settlement asset (EventDriven pricing). + /// @dev Returns the token every per-job bill for this service is collected and + /// distributed in: `address(0)` for native, or the ERC20 the customer selected + /// at request time and pinned at activation. Drivers read this to decide whether + /// to send native `msg.value` or to `approve` the Tangle and submit with value 0. + /// For non-EventDriven services (or an unknown id) this returns `address(0)`, + /// which is the native sentinel and does not imply the service settles per-job. + /// NOTE: the per-job rate (`getJobEventRate`) is denominated in THIS asset's + /// smallest unit — a service settling in a 6-decimal token (e.g. Tempo PathUSD) + /// must have its rate set in 6-dec units, not 18. + /// @param serviceId The service ID to query + /// @return The settlement asset address (`address(0)` = native) + function getServicePaymentAsset(uint64 serviceId) external view returns (address) { + return _serviceEventDrivenAsset[serviceId]; + } + /// @notice Get operator's data for a specific service /// @param serviceId The service ID to query /// @param op The operator address diff --git a/src/facets/tangle/TangleJobsAggregationFacet.sol b/src/facets/tangle/TangleJobsAggregationFacet.sol index 75bb8900..5cadd97d 100644 --- a/src/facets/tangle/TangleJobsAggregationFacet.sol +++ b/src/facets/tangle/TangleJobsAggregationFacet.sol @@ -19,18 +19,22 @@ contract TangleJobsAggregationFacet is JobsAggregation, IFacetSelectors { } /// @notice Distribute job payment (called from Jobs mixin) - /// @dev Payment is distributed based on effective exposure (delegation × exposureBps) + /// @dev Payment is distributed based on effective exposure (delegation × exposureBps), + /// in the service's pinned EventDriven settlement asset (native `address(0)` OR the + /// selected ERC20) so it matches the asset `_collectJobPaymentIfNeeded` pulled in. function _distributeJobPayment(uint64 serviceId, uint256 payment) internal override { Types.Service storage svc = _services[serviceId]; + address asset = _serviceEventDrivenAsset[serviceId]; address[] memory operators = _serviceOperatorSet[serviceId].values(); - ITanglePaymentsInternal(address(this)) - .distributePayment(serviceId, svc.blueprintId, address(0), payment, operators); + ITanglePaymentsInternal(address(this)).distributePayment(serviceId, svc.blueprintId, asset, payment, operators); } - /// @notice Distribute RFQ job payment to quoted operators at their individual prices + /// @notice Distribute RFQ job payment to quoted operators at their individual prices, + /// in the service's pinned EventDriven settlement asset (native or ERC20). function _distributeRFQJobPayment(uint64 serviceId, uint64 callId, uint256) internal override { Types.Service storage svc = _services[serviceId]; + address asset = _serviceEventDrivenAsset[serviceId]; address[] memory quotedOps = _jobQuotedOperators[serviceId][callId].values(); for (uint256 i = 0; i < quotedOps.length; i++) { @@ -41,7 +45,7 @@ contract TangleJobsAggregationFacet is JobsAggregation, IFacetSelectors { singleOp[0] = quotedOps[i]; ITanglePaymentsInternal(address(this)) - .distributePayment(serviceId, svc.blueprintId, address(0), opPayment, singleOp); + .distributePayment(serviceId, svc.blueprintId, asset, opPayment, singleOp); } } diff --git a/src/facets/tangle/TangleJobsFacet.sol b/src/facets/tangle/TangleJobsFacet.sol index 2649d81a..359cf819 100644 --- a/src/facets/tangle/TangleJobsFacet.sol +++ b/src/facets/tangle/TangleJobsFacet.sol @@ -21,18 +21,24 @@ contract TangleJobsFacet is JobsSubmission, IFacetSelectors { } /// @notice Distribute job payment (called from Jobs mixin) - /// @dev Payment is distributed based on effective exposure (delegation × exposureBps) + /// @dev Payment is distributed based on effective exposure (delegation × exposureBps), + /// in the service's pinned EventDriven settlement asset (native `address(0)` OR the + /// ERC20 the customer selected at request time). This is the same token the per-job + /// `collectPayment` in `JobsSubmission._collectJobPaymentIfNeeded` pulled in, so what + /// the customer paid and what operators/dev/treasury receive are always one currency. function _distributeJobPayment(uint64 serviceId, uint256 payment) internal override { Types.Service storage svc = _services[serviceId]; + address asset = _serviceEventDrivenAsset[serviceId]; address[] memory operators = _serviceOperatorSet[serviceId].values(); - ITanglePaymentsInternal(address(this)) - .distributePayment(serviceId, svc.blueprintId, address(0), payment, operators); + ITanglePaymentsInternal(address(this)).distributePayment(serviceId, svc.blueprintId, asset, payment, operators); } - /// @notice Distribute RFQ job payment to quoted operators at their individual prices + /// @notice Distribute RFQ job payment to quoted operators at their individual prices, + /// in the service's pinned EventDriven settlement asset (native or ERC20). function _distributeRFQJobPayment(uint64 serviceId, uint64 callId, uint256) internal override { Types.Service storage svc = _services[serviceId]; + address asset = _serviceEventDrivenAsset[serviceId]; address[] memory quotedOps = _jobQuotedOperators[serviceId][callId].values(); for (uint256 i = 0; i < quotedOps.length; i++) { @@ -43,7 +49,7 @@ contract TangleJobsFacet is JobsSubmission, IFacetSelectors { singleOp[0] = quotedOps[i]; ITanglePaymentsInternal(address(this)) - .distributePayment(serviceId, svc.blueprintId, address(0), opPayment, singleOp); + .distributePayment(serviceId, svc.blueprintId, asset, opPayment, singleOp); } } } diff --git a/src/facets/tangle/TangleServicesFacet.sol b/src/facets/tangle/TangleServicesFacet.sol index 4209e732..13b49aa0 100644 --- a/src/facets/tangle/TangleServicesFacet.sol +++ b/src/facets/tangle/TangleServicesFacet.sol @@ -180,9 +180,16 @@ contract TangleServicesFacet is ServicesApprovals, IFacetSelectors { } if (pricing == Types.PricingModel.EventDriven) { - // EventDriven services are funded by per-job `msg.value`, not by an upfront - // lump sum. `paymentAmount` is rejected at request-time by - // `_validatePricingPaymentConsistency`; nothing to do here. + // EventDriven services are funded per-job, not by an upfront lump sum + // (`paymentAmount` is rejected at request-time by + // `_validatePricingPaymentConsistency`). Pin the settlement asset the customer + // selected at request time — native `address(0)` OR a manager-allowed ERC20 — + // so every per-job bill collects and distributes in that currency. The token + // was already allow-list-validated at request time in + // `ServicesRequests._validateRequestPaymentAsset` (fail-closed for non-native). + // `address(0)` is both the native sentinel and the zero-default, so this write + // is a no-op for native services but keeps the mapping explicit and auditable. + _serviceEventDrivenAsset[serviceId] = paymentToken; return; } diff --git a/src/interfaces/ITangleBlueprints.sol b/src/interfaces/ITangleBlueprints.sol index 7994216b..6a7e417a 100644 --- a/src/interfaces/ITangleBlueprints.sol +++ b/src/interfaces/ITangleBlueprints.sol @@ -110,9 +110,17 @@ interface ITangleBlueprints { function blueprintMasterRevision(uint64 blueprintId) external view returns (uint32); /// @notice Set event rate overrides for one or more job types in a blueprint + /// @dev Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed + /// 18-decimal scale. Each EventDriven service pins its settlement asset at + /// activation (`getServicePaymentAsset`); a blueprint whose services settle in a + /// 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is + /// per-blueprint but the decimals are per-service-asset, so a blueprint intended + /// for a single settlement token should document that token's decimals. function setJobEventRates(uint64 blueprintId, uint8[] calldata jobIndexes, uint256[] calldata rates) external; /// @notice Get the effective event rate for a specific job type + /// @dev The returned rate is in the settlement asset's smallest unit — see + /// `setJobEventRates` and `getServicePaymentAsset`. function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view returns (uint256 rate); // ═══════════════════════════════════════════════════════════════════════════ diff --git a/src/interfaces/ITangleServices.sol b/src/interfaces/ITangleServices.sol index ca01de4b..ee9c38d3 100644 --- a/src/interfaces/ITangleServices.sol +++ b/src/interfaces/ITangleServices.sol @@ -282,6 +282,13 @@ interface ITangleServices { /// @notice Get service info function getService(uint64 serviceId) external view returns (Types.Service memory); + /// @notice Get a service's per-job (EventDriven) settlement asset. + /// @dev `address(0)` = native, otherwise the ERC20 pinned at activation from the + /// request's `paymentToken`. Every per-job bill for the service is collected and + /// distributed in this asset. Non-EventDriven services return `address(0)`. The + /// per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit. + function getServicePaymentAsset(uint64 serviceId) external view returns (address); + /// @notice Check if service is active function isServiceActive(uint64 serviceId) external view returns (bool); diff --git a/test/tangle/EventDrivenErc20Settlement.t.sol b/test/tangle/EventDrivenErc20Settlement.t.sol new file mode 100644 index 00000000..bd21c3d3 --- /dev/null +++ b/test/tangle/EventDrivenErc20Settlement.t.sol @@ -0,0 +1,518 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import { BaseTest } from "../BaseTest.sol"; +import { Tangle } from "../../src/Tangle.sol"; +import { Types } from "../../src/libraries/Types.sol"; +import { Errors } from "../../src/libraries/Errors.sol"; +import { BlueprintServiceManagerBase } from "../../src/BlueprintServiceManagerBase.sol"; +import { MockERC20 } from "../mocks/MockERC20.sol"; +import { MockToken } from "../mocks/MockToken.sol"; +import { TangleJobsRFQFacet } from "../../src/facets/tangle/TangleJobsRFQFacet.sol"; + +/// @notice Blueprint manager that allow-lists a single settlement asset for both request-time +/// and job-time payment-asset checks (context id is ignored, so the same answer holds +/// for `requestContextId` and `serviceId`). +contract AllowAssetManager is BlueprintServiceManagerBase { + mapping(address => bool) internal _allowed; + + function setAllowed(address asset, bool allowed) external { + _allowed[asset] = allowed; + } + + function queryIsPaymentAssetAllowed(uint64, address asset) external view override returns (bool) { + return _allowed[asset]; + } +} + +/// @title EventDrivenErc20SettlementTest +/// @notice Covers the generalized EventDriven per-job settlement asset: an EventDriven service +/// may settle per-job billing in native OR a manager-allowed ERC20 (e.g. Tempo PathUSD). +/// AUDITED FINANCIAL code — every path (happy, back-compat, fail-closed) is exercised. +contract EventDrivenErc20SettlementTest is BaseTest { + uint256 internal constant OPERATOR1_PK = 0x1A; + uint256 internal constant OPERATOR2_PK = 0x2B; + + MockERC20 internal settleToken; // 18-decimal allow-listed settlement token + // One BlueprintServiceManagerBase instance backs exactly ONE blueprint (its + // `onBlueprintCreated` is single-init), so each blueprint gets its own manager. + AllowAssetManager internal manager; // backs erc20Blueprint; de-list tests mutate this one + AllowAssetManager internal nativeManager; // backs nativeBlueprint + + uint64 internal erc20Blueprint; // EventDriven, settles in `settleToken` + uint64 internal nativeBlueprint; // EventDriven, settles in native (address(0)) + uint64 internal erc20Service; + uint64 internal nativeService; + + uint256 internal constant RATE = 10 ether; // per-job rate (18-dec token units) + + function setUp() public override { + super.setUp(); + + operator1 = vm.addr(OPERATOR1_PK); + operator2 = vm.addr(OPERATOR2_PK); + vm.deal(operator1, 100 ether); + vm.deal(operator2, 100 ether); + + // Register the RFQ facet so submitJobFromQuote is routable. Deploy the facet FIRST so + // the `new` does not consume the admin prank; then register under the prank. + TangleJobsRFQFacet rfqFacet = new TangleJobsRFQFacet(); + vm.prank(admin); + Tangle(payable(address(tangleProxy))).registerFacet(address(rfqFacet)); + + settleToken = new MockERC20(); + settleToken.mint(user1, 1_000_000 ether); + + manager = new AllowAssetManager(); + manager.setAllowed(address(settleToken), true); + manager.setAllowed(address(0), true); + + nativeManager = new AllowAssetManager(); + nativeManager.setAllowed(address(0), true); + + Types.BlueprintConfig memory cfg = Types.BlueprintConfig({ + membership: Types.MembershipModel.Fixed, + pricing: Types.PricingModel.EventDriven, + minOperators: 1, + maxOperators: 10, + subscriptionRate: 0, + subscriptionInterval: 0, + eventRate: RATE + }); + + vm.startPrank(developer); + erc20Blueprint = + tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-erc20", address(manager), cfg)); + nativeBlueprint = + tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-native", address(nativeManager), cfg)); + vm.stopPrank(); + + _registerOperator(operator1, 5 ether); + _registerOperator(operator2, 5 ether); + _registerForBlueprint(operator1, erc20Blueprint); + _registerForBlueprint(operator2, erc20Blueprint); + _registerForBlueprint(operator1, nativeBlueprint); + _registerForBlueprint(operator2, nativeBlueprint); + + erc20Service = _activateEventDrivenService(erc20Blueprint, address(settleToken)); + nativeService = _activateEventDrivenService(nativeBlueprint, address(0)); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // getServicePaymentAsset VIEW + // ═══════════════════════════════════════════════════════════════════════════ + + function test_GetServicePaymentAsset_Erc20() public view { + assertEq(tangle.getServicePaymentAsset(erc20Service), address(settleToken)); + } + + function test_GetServicePaymentAsset_NativeReturnsZero() public view { + assertEq(tangle.getServicePaymentAsset(nativeService), address(0)); + } + + function test_GetServicePaymentAsset_UnknownServiceReturnsZero() public view { + // Non-EventDriven / unknown ids default to the native sentinel. + assertEq(tangle.getServicePaymentAsset(9999), address(0)); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // ERC20 HAPPY PATH + // ═══════════════════════════════════════════════════════════════════════════ + + function test_Erc20_SubmitJob_TransfersViaTransferFrom_AndDistributes() public { + uint256 userBefore = settleToken.balanceOf(user1); + uint256 devBefore = settleToken.balanceOf(developer); + uint256 treasuryBefore = settleToken.balanceOf(treasury); + uint256 tangleBefore = settleToken.balanceOf(address(tangle)); + + // Job submitter must approve the Tangle and send NO native value. + vm.startPrank(user1); + settleToken.approve(address(tangle), RATE); + uint64 callId = tangle.submitJob(erc20Service, 0, ""); + vm.stopPrank(); + + // Payment recorded in the ERC20, pulled via transferFrom (user spent exactly RATE). + Types.JobCall memory job = tangle.getJobCall(erc20Service, callId); + assertEq(job.payment, RATE, "job payment must equal rate"); + assertEq(userBefore - settleToken.balanceOf(user1), RATE, "user must spend exactly RATE in the ERC20"); + + // Complete the job -> distribution fires in the ERC20. + vm.prank(operator1); + tangle.submitResult(erc20Service, callId, ""); + + assertTrue(tangle.getJobCall(erc20Service, callId).completed, "job must be completed"); + + // Split defaults: 20% dev (push), 20% treasury (push), 40% operator + 20% staker. + // No security commitments -> staker folds into operator pool = 60% accrued as pending, + // split across the TWO service operators by weight (equal exposure -> even halves). + uint256 devShare = (RATE * 2000) / 10_000; + uint256 protoShare = (RATE * 2000) / 10_000; + uint256 opPool = RATE - devShare - protoShare; // remaining 60%, shared by both operators + + assertEq(settleToken.balanceOf(developer) - devBefore, devShare, "developer ERC20 share"); + assertEq(settleToken.balanceOf(treasury) - treasuryBefore, protoShare, "treasury ERC20 share"); + + uint256 op1Pending = tangle.pendingRewards(operator1, address(settleToken)); + uint256 op2Pending = tangle.pendingRewards(operator2, address(settleToken)); + assertEq(op1Pending + op2Pending, opPool, "operator pool split across both operators"); + assertEq(op1Pending, opPool / 2, "operator1 gets its weighted half"); + + // Conservation: only the (undistributed-to-claim) operator pool remains in the Tangle. + assertEq(settleToken.balanceOf(address(tangle)) - tangleBefore, opPool, "residual held == operator pool"); + + // Operator can claim the ERC20 reward. + uint256 opTokenBefore = settleToken.balanceOf(operator1); + vm.prank(operator1); + tangle.claimRewards(address(settleToken)); + assertEq(settleToken.balanceOf(operator1) - opTokenBefore, op1Pending, "operator claimed ERC20 reward"); + assertEq(tangle.pendingRewards(operator1, address(settleToken)), 0, "pending cleared after claim"); + } + + function test_Erc20_SubmitJob_UsesPerJobRateOverride() public { + uint256 override_ = 25 ether; + uint8[] memory idx = new uint8[](1); + idx[0] = 0; + uint256[] memory rates = new uint256[](1); + rates[0] = override_; + vm.prank(developer); + tangle.setJobEventRates(erc20Blueprint, idx, rates); + + vm.startPrank(user1); + settleToken.approve(address(tangle), override_); + uint64 callId = tangle.submitJob(erc20Service, 0, ""); + vm.stopPrank(); + + assertEq(tangle.getJobCall(erc20Service, callId).payment, override_); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // NATIVE BACK-COMPAT + // ═══════════════════════════════════════════════════════════════════════════ + + function test_Native_SubmitJob_UnchangedBehavior() public { + uint256 devBefore = developer.balance; + uint256 treasuryBefore = treasury.balance; + + // Native EventDriven: value == payment, exactly as before this change. + vm.prank(user1); + uint64 callId = tangle.submitJob{ value: RATE }(nativeService, 0, ""); + + assertEq(tangle.getJobCall(nativeService, callId).payment, RATE); + + vm.prank(operator1); + tangle.submitResult(nativeService, callId, ""); + + uint256 devShare = (RATE * 2000) / 10_000; + uint256 protoShare = (RATE * 2000) / 10_000; + uint256 opPool = RATE - devShare - protoShare; // 60%, split across both operators + + assertEq(developer.balance - devBefore, devShare, "developer native share"); + assertEq(treasury.balance - treasuryBefore, protoShare, "treasury native share"); + assertEq( + tangle.pendingRewards(operator1) + tangle.pendingRewards(operator2), + opPool, + "operator pool split across both operators" + ); + assertEq(tangle.pendingRewards(operator1), opPool / 2, "operator1 gets its weighted half"); + } + + function test_Native_RequestService_NoManagerGateForNative() public { + // A native EventDriven REQUEST must not require the manager to allow `address(0)` at + // request time: build a blueprint whose manager allow-lists NOTHING and confirm the + // native request still activates. (This is the request-time behavior my change + // preserves — the job-time native gate is a separate, pre-existing check.) + AllowAssetManager strictManager = new AllowAssetManager(); + // Deliberately allow nothing at request time. + + Types.BlueprintConfig memory cfg = Types.BlueprintConfig({ + membership: Types.MembershipModel.Fixed, + pricing: Types.PricingModel.EventDriven, + minOperators: 1, + maxOperators: 10, + subscriptionRate: 0, + subscriptionInterval: 0, + eventRate: RATE + }); + vm.prank(developer); + uint64 bp = tangle.createBlueprint( + _blueprintDefinitionWithConfig("ipfs://ed-native-strict", address(strictManager), cfg) + ); + _registerForBlueprint(operator1, bp); + _registerForBlueprint(operator2, bp); + + // The request activates without the manager allow-listing native — no request-time + // TokenNotAllowed revert — and the service's settlement asset is native. + uint64 svc = _activateEventDrivenService(bp, address(0)); + assertEq(tangle.getServicePaymentAsset(svc), address(0)); + + // Now allow native so the (pre-existing) job-time gate passes, and confirm a native + // job settles exactly as before. + strictManager.setAllowed(address(0), true); + vm.prank(user1); + uint64 callId = tangle.submitJob{ value: RATE }(svc, 0, ""); + assertEq(tangle.getJobCall(svc, callId).payment, RATE); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // FAIL-CLOSED + // ═══════════════════════════════════════════════════════════════════════════ + + function test_FailClosed_RequestDisallowedErc20Reverts() public { + // A second, un-allowlisted token. + MockERC20 badToken = new MockERC20(); + badToken.mint(user1, 1000 ether); + + address[] memory ops = new address[](1); + ops[0] = operator1; + address[] memory callers = new address[](0); + + vm.prank(user1); + vm.expectRevert(abi.encodeWithSelector(Errors.TokenNotAllowed.selector, address(badToken))); + tangle.requestService( + erc20Blueprint, ops, "", callers, 0, address(badToken), 0, Types.ConfidentialityPolicy.Any + ); + } + + function test_FailClosed_NativeValueOnErc20ServiceReverts() public { + // ERC20-settlement service: sending native value must revert in collectPayment + // (ERC20 path requires msgValue == 0). + vm.startPrank(user1); + settleToken.approve(address(tangle), RATE); + vm.expectRevert(abi.encodeWithSelector(Errors.InvalidMsgValue.selector, 0, RATE)); + tangle.submitJob{ value: RATE }(erc20Service, 0, ""); + vm.stopPrank(); + } + + function test_FailClosed_MissingApprovalOnErc20ServiceReverts() public { + // No approval -> transferFrom reverts inside collectPayment. + vm.prank(user1); + vm.expectRevert(); + tangle.submitJob(erc20Service, 0, ""); + } + + function test_FailClosed_ZeroValueOnNativeServiceReverts() public { + // Native service with payment > 0: submitting with value 0 must revert + // (native path requires msgValue == payment). + vm.prank(user1); + vm.expectRevert(abi.encodeWithSelector(Errors.InvalidMsgValue.selector, RATE, 0)); + tangle.submitJob(nativeService, 0, ""); + } + + function test_FailClosed_ManagerDelistsErc20AfterActivation() public { + // Manager de-lists the settlement token AFTER activation: per-job collection must + // fail closed at submit time even though the token was allowed at request time. + manager.setAllowed(address(settleToken), false); + + vm.startPrank(user1); + settleToken.approve(address(tangle), RATE); + vm.expectRevert(abi.encodeWithSelector(Errors.TokenNotAllowed.selector, address(settleToken))); + tangle.submitJob(erc20Service, 0, ""); + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // RFQ IN ERC20 + // ═══════════════════════════════════════════════════════════════════════════ + + function test_Erc20_SubmitJobFromQuote_SettlesInErc20() public { + uint256 price = 30 ether; + Types.SignedJobQuote[] memory quotes = new Types.SignedJobQuote[](1); + quotes[0] = _createJobQuote(operator1, OPERATOR1_PK, erc20Service, 0, price); + + uint256 userBefore = settleToken.balanceOf(user1); + + vm.startPrank(user1); + settleToken.approve(address(tangle), price); + uint64 callId = tangle.submitJobFromQuote(erc20Service, 0, "", quotes); + vm.stopPrank(); + + assertEq(tangle.getJobCall(erc20Service, callId).payment, price); + assertTrue(tangle.getJobCall(erc20Service, callId).isRFQ); + assertEq(userBefore - settleToken.balanceOf(user1), price, "RFQ pulled ERC20 via transferFrom"); + + // Complete -> the single quoted operator is paid its full quote in the ERC20. + vm.prank(operator1); + tangle.submitResult(erc20Service, callId, ""); + assertTrue(tangle.getJobCall(erc20Service, callId).completed); + + uint256 devShare = (price * 2000) / 10_000; + uint256 protoShare = (price * 2000) / 10_000; + uint256 opShare = price - devShare - protoShare; + assertEq(tangle.pendingRewards(operator1, address(settleToken)), opShare, "RFQ operator ERC20 share"); + } + + function test_Erc20_SubmitJobFromQuote_NativeValueReverts() public { + uint256 price = 30 ether; + Types.SignedJobQuote[] memory quotes = new Types.SignedJobQuote[](1); + quotes[0] = _createJobQuote(operator1, OPERATOR1_PK, erc20Service, 0, price); + + vm.startPrank(user1); + settleToken.approve(address(tangle), price); + vm.expectRevert(abi.encodeWithSelector(Errors.InvalidMsgValue.selector, 0, price)); + tangle.submitJobFromQuote{ value: price }(erc20Service, 0, "", quotes); + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // DECIMALS NOTE: 6-decimal settlement token (e.g. Tempo PathUSD) + // ═══════════════════════════════════════════════════════════════════════════ + + function test_SixDecimalToken_RateIsInTokenSmallestUnit() public { + MockToken usd = new MockToken("PathUSD", "pUSD", 6); + usd.mint(user1, 1_000_000e6); + + AllowAssetManager usdManager = new AllowAssetManager(); + usdManager.setAllowed(address(usd), true); + + // Rate is 5.00 pUSD expressed in the token's 6-decimal smallest unit. + uint256 usdRate = 5e6; + Types.BlueprintConfig memory cfg = Types.BlueprintConfig({ + membership: Types.MembershipModel.Fixed, + pricing: Types.PricingModel.EventDriven, + minOperators: 1, + maxOperators: 10, + subscriptionRate: 0, + subscriptionInterval: 0, + eventRate: usdRate + }); + vm.prank(developer); + uint64 bp = tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-usd", address(usdManager), cfg)); + _registerForBlueprint(operator1, bp); + _registerForBlueprint(operator2, bp); + + uint64 svc = _activateEventDrivenService(bp, address(usd)); + assertEq(tangle.getServicePaymentAsset(svc), address(usd)); + + uint256 userBefore = usd.balanceOf(user1); + vm.startPrank(user1); + usd.approve(address(tangle), usdRate); + uint64 callId = tangle.submitJob(svc, 0, ""); + vm.stopPrank(); + + // Exactly 5.00 pUSD (5e6 units) collected — the rate is denominated in the settlement + // asset's smallest unit, not a fixed 18-decimal scale. + assertEq(tangle.getJobCall(svc, callId).payment, usdRate); + assertEq(userBefore - usd.balanceOf(user1), usdRate); + + vm.prank(operator1); + tangle.submitResult(svc, callId, ""); + + uint256 devShare = (usdRate * 2000) / 10_000; + uint256 protoShare = (usdRate * 2000) / 10_000; + uint256 opPool = usdRate - devShare - protoShare; // split across both operators + assertEq(usd.balanceOf(developer), devShare, "developer pUSD share"); + assertEq(usd.balanceOf(treasury), protoShare, "treasury pUSD share"); + assertEq( + tangle.pendingRewards(operator1, address(usd)) + tangle.pendingRewards(operator2, address(usd)), + opPool, + "operator pUSD pool split across both operators" + ); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // FUZZ + // ═══════════════════════════════════════════════════════════════════════════ + + function testFuzz_Erc20_SubmitJob_VariableRate(uint128 rawRate) public { + uint256 rate = uint256(rawRate); + vm.assume(rate >= 100); // PaymentLib.MINIMUM_PAYMENT_AMOUNT + vm.assume(rate <= 100_000 ether); + + settleToken.mint(user1, rate); + + uint8[] memory idx = new uint8[](1); + idx[0] = 0; + uint256[] memory rates = new uint256[](1); + rates[0] = rate; + vm.prank(developer); + tangle.setJobEventRates(erc20Blueprint, idx, rates); + + uint256 userBefore = settleToken.balanceOf(user1); + vm.startPrank(user1); + settleToken.approve(address(tangle), rate); + uint64 callId = tangle.submitJob(erc20Service, 0, ""); + vm.stopPrank(); + + assertEq(tangle.getJobCall(erc20Service, callId).payment, rate); + assertEq(userBefore - settleToken.balanceOf(user1), rate); + + vm.prank(operator1); + tangle.submitResult(erc20Service, callId, ""); + assertTrue(tangle.getJobCall(erc20Service, callId).completed); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // HELPERS + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice Request + fully approve a 2-operator EventDriven service settling in `asset`. + function _activateEventDrivenService(uint64 blueprintId, address asset) internal returns (uint64 serviceId) { + address[] memory ops = new address[](2); + ops[0] = operator1; + ops[1] = operator2; + address[] memory callers = new address[](0); + + vm.prank(user1); + uint64 requestId = + tangle.requestService(blueprintId, ops, "", callers, 0, asset, 0, Types.ConfidentialityPolicy.Any); + + vm.prank(operator1); + tangle.approveService(_approve(requestId)); + vm.prank(operator2); + tangle.approveService(_approve(requestId)); + + serviceId = tangle.serviceCount() - 1; + } + + function _createJobQuote( + address operator, + uint256 privateKey, + uint64 serviceId, + uint8 jobIndex, + uint256 price + ) + internal + view + returns (Types.SignedJobQuote memory) + { + Types.JobQuoteDetails memory details = Types.JobQuoteDetails({ + requester: user1, + serviceId: serviceId, + jobIndex: jobIndex, + price: price, + timestamp: uint64(block.timestamp), + expiry: uint64(block.timestamp) + 1 hours, + confidentiality: 0, + inputsHash: keccak256("") + }); + + bytes32 typeHash = keccak256( + "JobQuoteDetails(address requester,uint64 serviceId,uint8 jobIndex,uint256 price,uint64 timestamp,uint64 expiry,uint8 confidentiality,bytes32 inputsHash)" + ); + bytes32 domainSeparator = keccak256( + abi.encode( + keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), + keccak256("TangleQuote"), + keccak256("1"), + block.chainid, + address(tangle) + ) + ); + bytes32 structHash = keccak256( + abi.encode( + typeHash, + details.requester, + details.serviceId, + details.jobIndex, + details.price, + details.timestamp, + details.expiry, + details.confidentiality, + details.inputsHash + ) + ); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(privateKey, digest); + return Types.SignedJobQuote({ details: details, signature: abi.encodePacked(r, s, v), operator: operator }); + } +} diff --git a/test/tangle/Payments.t.sol b/test/tangle/Payments.t.sol index dfe3b147..ba69e0b5 100644 --- a/test/tangle/Payments.t.sol +++ b/test/tangle/Payments.t.sol @@ -382,7 +382,17 @@ contract PaymentsTest is BaseTest { vm.stopPrank(); } - function test_EventDriven_RequestService_RevertERC20WhenZeroPayment() public { + /// @notice Fail-closed: an EventDriven request naming a manager-DISALLOWED ERC20 + /// settlement token (with zero upfront amount) must revert `TokenNotAllowed` + /// at request time, before any state is written. Since PR the + /// "EventDriven is native-only" constraint was relaxed to allow a chosen ERC20 + /// settlement token, the guard that must hold is the manager allow-list, not a + /// blanket native-only revert. + function test_EventDriven_RequestService_RevertDisallowedErc20SettlementToken() public { + MockPaymentAssetManager manager = new MockPaymentAssetManager(); + // Explicitly DISALLOW the token (default mapping value is false anyway). + manager.setAssetAllowed(address(token), false); + Types.BlueprintConfig memory config = Types.BlueprintConfig({ membership: Types.MembershipModel.Fixed, pricing: Types.PricingModel.EventDriven, @@ -395,7 +405,7 @@ contract PaymentsTest is BaseTest { vm.prank(developer); uint64 bp = tangle.createBlueprint( - _blueprintDefinitionWithConfig("ipfs://event-native-only-zero", address(0), config) + _blueprintDefinitionWithConfig("ipfs://event-erc20-disallowed", address(manager), config) ); _registerForBlueprint(operator1, bp); @@ -404,9 +414,9 @@ contract PaymentsTest is BaseTest { address[] memory callers = new address[](0); // Zero `paymentAmount` clears the `UpfrontPaymentNotAllowedForEventDriven` check; - // a non-native `paymentToken` then fails the EventDriven native-only constraint. + // the non-native, un-allowlisted `paymentToken` must then fail closed. vm.prank(user1); - vm.expectRevert(Errors.InvalidPaymentToken.selector); + vm.expectRevert(abi.encodeWithSelector(Errors.TokenNotAllowed.selector, address(token))); tangle.requestService(bp, operators, "", callers, 0, address(token), 0, Types.ConfidentialityPolicy.Any); } From e819cdca5b5a6dd9aacacc85cc9be94c6246b6a3 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Wed, 8 Jul 2026 22:03:51 -0600 Subject: [PATCH 2/2] fix(payments): pin EventDriven settlement asset to the blueprint (developer), not the customer request MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes a HIGH-severity 10^12x under-payment: the per-job rate is per-blueprint (developer-set, `_jobEventRates`/`eventRate`) but the settlement asset was pinned per-service from the CUSTOMER's request `paymentToken`. A developer authoring a 6-decimal rate (e.g. 5e6 = 5.00 PathUSD) could be driven to settle in native by a customer requesting `address(0)`, so every job settled at 5e6 wei (~$0) while consuming real compute. Root fix: the settlement asset is now declared by the blueprint OWNER at the blueprint level and pinned to the service at activation from the blueprint — the same party sets asset and rate, so their units always match and there is no code path to a service whose settlement asset differs from its blueprint's declared asset. - TangleStorage: append `_blueprintSettlementAsset[blueprintId]` after `_serviceEventDrivenAsset` (slot 91); shrink `__gap` 26->25 (slot 92). No slot reorder — StorageLayoutSnapshotTest tail pins (88/89) unchanged. - BlueprintsManage: owner-gated `setBlueprintSettlementAsset` (mirrors `setJobEventRates` auth) validating non-native assets via the manager allow-list (native `address(0)` skips the gate, mirroring the request-time native path); `getBlueprintSettlementAsset` view. Rate is denominated in this asset's smallest unit. - TangleServicesFacet `_handleInitialPayments`: pin the service from `_blueprintSettlementAsset[blueprintId]`, never the request's `paymentToken`. - QuotesCreate `_activateQuoteService`: pin the same blueprint asset — the RFQ create path is a second activation path and must not leave an ERC20 blueprint's service at the native default. - ServicesRequests `_validatePricingPaymentConsistency`: an EventDriven request must pass native `address(0)` (revert otherwise) and zero `paymentAmount`. The customer cannot choose the asset; simplify `_validateRequestPaymentAsset` accordingly. - Collection/distribution (JobsSubmission/JobsRFQ/facets) unchanged: still read `_serviceEventDrivenAsset[serviceId]`, now guaranteed equal to the blueprint asset. - Regenerate bindings for the new setter/view/event. Tests: EventDrivenErc20Settlement adds the explicit exploit test (a 6-dec rate cannot settle in native), customer-cannot-choose-asset, pin-at-activation, quote-path pin, setter auth/validation, plus native back-compat. 26/26 in that suite; regression green (tangle 383, audit 232, staking 266, security 45, blueprints 97, FacetSize/Tempo-cap 3 under the optimized profile). --- bindings/TNT_CORE_VERSION | 2 +- bindings/abi/IBlueprintServiceManager.json | 2 +- bindings/abi/IMultiAssetDelegation.json | 2 +- bindings/abi/ITangle.json | 2 +- bindings/abi/ITangleFull.json | 2 +- bindings/abi/MultiAssetDelegation.json | 2 +- bindings/abi/OperatorStatusRegistry.json | 2 +- bindings/src/bindings/i_tangle.rs | 703 +++++++++++++++- bindings/src/bindings/i_tangle_blueprints.rs | 771 ++++++++++++++++-- bindings/src/bindings/i_tangle_full.rs | 641 ++++++++++++++- src/TangleStorage.sol | 46 +- src/core/BlueprintsManage.sol | 52 ++ src/core/JobsSubmission.sol | 9 +- src/core/QuotesCreate.sol | 11 + src/core/ServicesRequests.sol | 54 +- src/core/TangleCoreApi.sol | 5 +- .../TangleBlueprintsManagementFacet.sol | 4 +- src/facets/tangle/TangleJobsFacet.sol | 2 +- src/facets/tangle/TangleServicesFacet.sol | 23 +- src/interfaces/ITangleBlueprints.sol | 18 + src/interfaces/ITangleServices.sol | 5 +- test/tangle/EventDrivenErc20Settlement.t.sol | 410 ++++++++-- test/tangle/Payments.t.sol | 14 +- 23 files changed, 2560 insertions(+), 222 deletions(-) diff --git a/bindings/TNT_CORE_VERSION b/bindings/TNT_CORE_VERSION index f70577bd..bf8f5262 100644 --- a/bindings/TNT_CORE_VERSION +++ b/bindings/TNT_CORE_VERSION @@ -1 +1 @@ -f0bc9ca0e7a15efa2228e4da81f59c3d6f8f7644 \ No newline at end of file +7cdda757d58cc659ab8f8a37b71f6d9bb1b0f623 \ No newline at end of file diff --git a/bindings/abi/IBlueprintServiceManager.json b/bindings/abi/IBlueprintServiceManager.json index 9b572f5e..a375c48d 100644 --- a/bindings/abi/IBlueprintServiceManager.json +++ b/bindings/abi/IBlueprintServiceManager.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"canJoin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canLeave","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"computeBillAdjustmentBps","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"periodStart","type":"uint64","internalType":"uint64"},{"name":"periodEnd","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"adjustmentBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"forceRemoveAllowsBelowMin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ok","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAggregationThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"thresholdBps","type":"uint16","internalType":"uint16"},{"name":"thresholdType","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatInterval","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"interval","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"threshold","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getMinOperatorStake","inputs":[],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNonPaymentTerminationPolicy","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"graceIntervals","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRequiredResultCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getSlashingWindow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"window","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"onAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onApprove","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"stakingPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onBinaryVersionPublished","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"version","type":"tuple","internalType":"struct Types.BinaryVersion","components":[{"name":"versionId","type":"uint64","internalType":"uint64"},{"name":"sha256Hash","type":"bytes32","internalType":"bytes32"},{"name":"attestationHash","type":"bytes32","internalType":"bytes32"},{"name":"publishedAt","type":"uint64","internalType":"uint64"},{"name":"deprecated","type":"bool","internalType":"bool"}]},{"name":"binaryUri","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onBlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"tangleCore","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitCanceled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitScheduled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onJobResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"},{"name":"outputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onOperatorBinaryAcked","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"versionId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorJoined","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorLeft","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRegister","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onReject","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"requestInputs","type":"bytes","internalType":"bytes"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentAsset","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onServiceInitialized","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onServiceTermination","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnappliedSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnregister","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUpdatePreferences","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"newPreferences","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"queryDeveloperPaymentAddress","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"developerPaymentAddress","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"queryDisputeOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"disputeOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"queryIsPaymentAssetAllowed","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"isAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"querySlashingOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"slashingOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requiresAggregation","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canJoin(uint64,address)":"b47242e8","canLeave(uint64,address)":"e518de76","computeBillAdjustmentBps(uint64,uint64,uint64)":"f93ff2b7","forceRemoveAllowsBelowMin(uint64)":"f3e28f32","getAggregationThreshold(uint64,uint8)":"25fcc64e","getExitConfig(uint64)":"d2672ed4","getHeartbeatInterval(uint64)":"0068080b","getHeartbeatThreshold(uint64)":"92cbb78e","getMinOperatorStake()":"54dce6c2","getNonPaymentTerminationPolicy(uint64)":"71e8e85d","getRequiredResultCount(uint64,uint8)":"4c443e04","getSlashingWindow(uint64)":"3fdadfcc","onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":"158bb2eb","onApprove(address,uint64,uint8)":"b159eb34","onBinaryVersionPublished(uint64,(uint64,bytes32,bytes32,uint64,bool),string)":"292c9e1c","onBlueprintCreated(uint64,address,address)":"0b6535d7","onExitCanceled(uint64,address)":"5440662c","onExitScheduled(uint64,address,uint64)":"e0559c63","onJobCall(uint64,uint8,uint64,bytes)":"9838caa3","onJobResult(uint64,uint8,uint64,address,bytes32,bytes)":"e649fc03","onOperatorBinaryAcked(uint64,uint64,address)":"cd81472b","onOperatorJoined(uint64,address,uint16)":"9aa26a92","onOperatorLeft(uint64,address)":"965d231b","onRegister(address,bytes)":"67793cc6","onReject(address,uint64)":"c9cd4a18","onRequest(uint64,address,address[],bytes,uint64,address,uint256)":"c28cd812","onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":"82a1ece4","onServiceTermination(uint64,address)":"a24e8a90","onSlash(uint64,bytes,uint8)":"7e14b919","onUnappliedSlash(uint64,bytes,uint8)":"0881898f","onUnregister(address)":"151a4576","onUpdatePreferences(address,bytes)":"f58e2066","queryDeveloperPaymentAddress(uint64)":"08179f35","queryDisputeOrigin(uint64)":"14b4df4c","queryIsPaymentAssetAllowed(uint64,address)":"e390fcdb","querySlashingOrigin(uint64)":"74ceeb55","requiresAggregation(uint64,uint8)":"19ed5bb2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canLeave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"periodStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"periodEnd\",\"type\":\"uint64\"}],\"name\":\"computeBillAdjustmentBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"adjustmentBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"forceRemoveAllowsBelowMin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ok\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getAggregationThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"thresholdBps\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"thresholdType\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatInterval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatThreshold\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinOperatorStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getNonPaymentTerminationPolicy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"graceIntervals\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getRequiredResultCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"required\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashingWindow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"window\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"onAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"stakingPercent\",\"type\":\"uint8\"}],\"name\":\"onApprove\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"versionId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sha256Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attestationHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"publishedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"deprecated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.BinaryVersion\",\"name\":\"version\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"binaryUri\",\"type\":\"string\"}],\"name\":\"onBinaryVersionPublished\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tangleCore\",\"type\":\"address\"}],\"name\":\"onBlueprintCreated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onExitCanceled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"onExitScheduled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"onJobCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"outputs\",\"type\":\"bytes\"}],\"name\":\"onJobResult\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"versionId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorBinaryAcked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"onOperatorJoined\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorLeft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"onRegister\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"onReject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"requestInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"name\":\"onRequest\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"onServiceInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"onServiceTermination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onUnappliedSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onUnregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newPreferences\",\"type\":\"bytes\"}],\"name\":\"onUpdatePreferences\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDeveloperPaymentAddress\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"developerPaymentAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDisputeOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"disputeOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"queryIsPaymentAssetAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"querySlashingOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"slashingOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"requiresAggregation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Blueprint developers implement this to customize all aspects of their blueprint. This is the primary integration point for blueprint developers - implement the hooks you need and leave others as default (via BlueprintServiceManagerBase). The lifecycle flow: 1. Blueprint created \\u2192 onBlueprintCreated 2. Operators register \\u2192 onRegister 3. Service requested \\u2192 onRequest 4. Operators approve \\u2192 onApprove 5. Service activated \\u2192 onServiceInitialized 6. Jobs submitted \\u2192 onJobCall 7. Results submitted \\u2192 onJobResult 8. Service terminated \\u2192 onServiceTermination\",\"kind\":\"dev\",\"methods\":{\"canJoin(uint64,address)\":{\"details\":\"Called before operator joins - return false to reject\",\"params\":{\"operator\":\"The operator wanting to join\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can join\"}},\"canLeave(uint64,address)\":{\"details\":\"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.\",\"params\":{\"operator\":\"The operator wanting to leave\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can leave\"}},\"computeBillAdjustmentBps(uint64,uint64,uint64)\":{\"details\":\"Called by the protocol's permissionless bill trigger BEFORE drawing the bill from escrow, so a manager can implement uptime-based discounts, missed-result penalties, or any other quality-of-service feedback. The returned value is clamped to `[0, 10_000]` (`10_000` = no discount, `0` = bill is waived). Values above 10_000 cannot inflate the bill \\u2014 a misbehaving manager cannot overcharge the customer. Reverting or being unimplemented yields the full bill.\",\"params\":{\"periodEnd\":\"Exclusive timestamp of the billing window's end (= `lastPaymentAt + interval`)\",\"periodStart\":\"Inclusive timestamp of the billing window's start (= prior `lastPaymentAt`)\",\"serviceId\":\"Service being billed\"},\"returns\":{\"adjustmentBps\":\"Bill multiplier in basis points (10_000 = full bill)\"}},\"forceRemoveAllowsBelowMin(uint64)\":{\"details\":\"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"ok\":\"True to allow eviction below the minimum operator count\"}},\"getAggregationThreshold(uint64,uint8)\":{\"details\":\"Only relevant if requiresAggregation returns true\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"thresholdBps\":\"Threshold in basis points (6700 = 67%)\",\"thresholdType\":\"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)\"}},\"getExitConfig(uint64)\":{\"details\":\"Defines minimum commitment and exit queue timing\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"exitQueueDuration\":\"Time between scheduling exit and completing it (seconds)\",\"forceExitAllowed\":\"Whether service owner can force-exit operators\",\"minCommitmentDuration\":\"Minimum time operator must stay after joining (seconds)\",\"useDefault\":\"True to use protocol default\"}},\"getHeartbeatInterval(uint64)\":{\"details\":\"Operators must submit heartbeats within this interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"interval\":\"Heartbeat interval in blocks (0 = disabled)\",\"useDefault\":\"True to use protocol default, false to use custom value\"}},\"getHeartbeatThreshold(uint64)\":{\"details\":\"Percentage of operators that must respond within interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"threshold\":\"Threshold percentage (0-100)\",\"useDefault\":\"True to use protocol default\"}},\"getMinOperatorStake()\":{\"details\":\"Called during operator registration to validate stake requirements\",\"returns\":{\"minStake\":\"Custom minimum stake amount (only used if useDefault=false)\",\"useDefault\":\"True to use protocol default from staking module\"}},\"getNonPaymentTerminationPolicy(uint64)\":{\"details\":\"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"graceIntervals\":\"Additional full intervals to wait after first missed payment\",\"useDefault\":\"True to use protocol default\"}},\"getRequiredResultCount(uint64,uint8)\":{\"details\":\"Override for consensus requirements (e.g., 2/3 majority)\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"Number of results needed (0 = service operator count)\"}},\"getSlashingWindow(uint64)\":{\"details\":\"Time window (in SECONDS) during which a proposed slash can be disputed before it becomes executable. Wired at slash-proposal time; a custom window is clamped to the protocol bounds [MIN_DISPUTE_WINDOW, MAX_DISPUTE_WINDOW]. Return useDefault=true to use the protocol-global window.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"useDefault\":\"True to use protocol default\",\"window\":\"Dispute window in seconds (clamped to protocol bounds)\"}},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Validate the aggregated result, verify BLS signature, check threshold\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key of signers (G2 point)\",\"aggregatedSignature\":\"The aggregated BLS signature (G1 point x, y)\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"output\":\"The aggregated output\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap of which operators signed\"}},\"onApprove(address,uint64,uint8)\":{\"params\":{\"operator\":\"The approving operator\",\"requestId\":\"The request ID\",\"stakingPercent\":\"Percentage of stake committed to this service (0-100)\"}},\"onBinaryVersionPublished(uint64,(uint64,bytes32,bytes32,uint64,bool),string)\":{\"details\":\"Custom BSMs MAY revert to gate the publish (e.g. require a publisher-multisig sig). Tangle forwards this call best-effort via `_tryCallManager`, so a revert is observed off-chain via `ManagerHookFailed` but does NOT undo the on-chain version row \\u2014 the registry is append-only by design.\"},\"onBlueprintCreated(uint64,address,address)\":{\"details\":\"Store the blueprintId and tangleCore address for future reference\",\"params\":{\"blueprintId\":\"The new blueprint ID\",\"owner\":\"The blueprint owner\",\"tangleCore\":\"The address of the Tangle core contract\"}},\"onExitCanceled(uint64,address)\":{\"params\":{\"operator\":\"The operator canceling exit\",\"serviceId\":\"The service ID\"}},\"onExitScheduled(uint64,address,uint64)\":{\"details\":\"Allows manager to track pending exits, notify other parties, etc.\",\"params\":{\"executeAfter\":\"Timestamp when exit can be executed\",\"operator\":\"The operator scheduling exit\",\"serviceId\":\"The service ID\"}},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"details\":\"Validate job inputs, check caller permissions, etc.\",\"params\":{\"inputs\":\"Job inputs (blueprint-specific encoding)\",\"job\":\"The job index in the blueprint\",\"jobCallId\":\"Unique ID for this job call\",\"serviceId\":\"The service ID\"}},\"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)\":{\"details\":\"Validate result format, check operator eligibility, aggregate results\",\"params\":{\"inputsHash\":\"keccak256 of the original job inputs. The raw inputs are delivered to the manager at submit time via `onJobCall`; a BSM that needs them at result time caches them there and verifies against this hash (they also ride the JobSubmitted event).\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"operator\":\"The operator submitting\",\"outputs\":\"Result outputs (blueprint-specific encoding)\",\"serviceId\":\"The service ID\"}},\"onOperatorBinaryAcked(uint64,uint64,address)\":{\"details\":\"Default no-op; custom BSMs MAY react (e.g. emit reputation events, gate future job dispatch on the ack). Forwarded best-effort.\"},\"onOperatorJoined(uint64,address,uint16)\":{\"params\":{\"exposureBps\":\"The operator's stake exposure in basis points\",\"operator\":\"The operator that joined\",\"serviceId\":\"The service ID\"}},\"onOperatorLeft(uint64,address)\":{\"params\":{\"operator\":\"The operator that left\",\"serviceId\":\"The service ID\"}},\"onRegister(address,bytes)\":{\"details\":\"Validate operator requirements here (stake, reputation, etc.)\",\"params\":{\"operator\":\"The operator's address\",\"registrationInputs\":\"Custom registration data (blueprint-specific encoding)\"}},\"onReject(address,uint64)\":{\"params\":{\"operator\":\"The rejecting operator\",\"requestId\":\"The request ID\"}},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"details\":\"Validate service configuration, operator selection, payment amount\",\"params\":{\"operators\":\"Requested operators\",\"paymentAmount\":\"Payment amount\",\"paymentAsset\":\"Payment token address (address(0) for native)\",\"requestId\":\"The request ID\",\"requestInputs\":\"Service configuration (blueprint-specific encoding)\",\"requester\":\"Who is requesting the service\",\"ttl\":\"Time-to-live for the service\"}},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"owner\":\"The service owner\",\"permittedCallers\":\"Addresses allowed to submit jobs\",\"requestId\":\"The original request ID\",\"serviceId\":\"The new service ID\",\"ttl\":\"Service time-to-live\"}},\"onServiceTermination(uint64,address)\":{\"params\":{\"owner\":\"The service owner\",\"serviceId\":\"The service ID\"}},\"onSlash(uint64,bytes,uint8)\":{\"params\":{\"offender\":\"The slashed operator\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage slashed\"}},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"details\":\"This is the dispute window - gather evidence, notify parties\",\"params\":{\"offender\":\"The operator being slashed (encoded as bytes for flexibility)\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage of stake to slash\"}},\"onUnregister(address)\":{\"params\":{\"operator\":\"The operator's address\"}},\"onUpdatePreferences(address,bytes)\":{\"params\":{\"newPreferences\":\"Updated preferences data\",\"operator\":\"The operator's address\"}},\"queryDeveloperPaymentAddress(uint64)\":{\"details\":\"Override to route payments to different addresses per service\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"developerPaymentAddress\":\"Address to receive developer share\"}},\"queryDisputeOrigin(uint64)\":{\"details\":\"Override to designate a custom dispute resolver (e.g. a dispute contract). This account may dispute a pending slash on this service bondless, like SLASH_ADMIN, and escalates it to admin resolution. It cannot dispute a slash it proposed itself. Return address(0) to disable the custom dispute path (operator + SLASH_ADMIN only).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"disputeOrigin\":\"Address that can dispute (default: this contract)\"}},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"params\":{\"asset\":\"The payment asset address (address(0) for native)\",\"serviceId\":\"The service ID\"},\"returns\":{\"isAllowed\":\"True if the asset can be used for payment\"}},\"querySlashingOrigin(uint64)\":{\"details\":\"Override to allow custom slashing authorities (dispute contracts, etc.)\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"slashingOrigin\":\"Address that can slash (default: this contract)\"}},\"requiresAggregation(uint64,uint8)\":{\"details\":\"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"True if BLS aggregation is required for this job\"}}},\"title\":\"IBlueprintServiceManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canJoin(uint64,address)\":{\"notice\":\"Check if an operator can join a dynamic service\"},\"canLeave(uint64,address)\":{\"notice\":\"Check if an operator can leave a dynamic service\"},\"computeBillAdjustmentBps(uint64,uint64,uint64)\":{\"notice\":\"Scale the nominal subscription bill for a period by an SLA / quality factor.\"},\"forceRemoveAllowsBelowMin(uint64)\":{\"notice\":\"Whether `forceRemoveOperator` may drop the service below `minOperators`.\"},\"getAggregationThreshold(uint64,uint8)\":{\"notice\":\"Get the aggregation threshold configuration for a job\"},\"getExitConfig(uint64)\":{\"notice\":\"Get the exit configuration for operator departures\"},\"getHeartbeatInterval(uint64)\":{\"notice\":\"Get the heartbeat interval for a service\"},\"getHeartbeatThreshold(uint64)\":{\"notice\":\"Get the heartbeat threshold for a service\"},\"getMinOperatorStake()\":{\"notice\":\"Get the minimum stake required for operators to register for this blueprint\"},\"getNonPaymentTerminationPolicy(uint64)\":{\"notice\":\"Get non-payment termination policy for subscription services\"},\"getRequiredResultCount(uint64,uint8)\":{\"notice\":\"Get the number of results required to complete a job\"},\"getSlashingWindow(uint64)\":{\"notice\":\"Get the dispute window for a service's slashes\"},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Called when an aggregated job result is submitted\"},\"onApprove(address,uint64,uint8)\":{\"notice\":\"Called when an operator approves a service request\"},\"onBinaryVersionPublished(uint64,(uint64,bytes32,bytes32,uint64,bool),string)\":{\"notice\":\"Called when a new binary version is published for this blueprint\"},\"onBlueprintCreated(uint64,address,address)\":{\"notice\":\"Called when blueprint is created\"},\"onExitCanceled(uint64,address)\":{\"notice\":\"Called when an operator cancels their scheduled exit\"},\"onExitScheduled(uint64,address,uint64)\":{\"notice\":\"Called when an operator schedules their exit from a service\"},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"notice\":\"Called when a job is submitted\"},\"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)\":{\"notice\":\"Called when an operator submits a job result\"},\"onOperatorBinaryAcked(uint64,uint64,address)\":{\"notice\":\"Called when an operator acknowledges a binary version for a service\"},\"onOperatorJoined(uint64,address,uint16)\":{\"notice\":\"Called after an operator successfully joins a service\"},\"onOperatorLeft(uint64,address)\":{\"notice\":\"Called after an operator successfully leaves a service\"},\"onRegister(address,bytes)\":{\"notice\":\"Called when an operator registers to this blueprint\"},\"onReject(address,uint64)\":{\"notice\":\"Called when an operator rejects a service request\"},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"notice\":\"Called when a service is requested\"},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"notice\":\"Called when service becomes active (all operators approved)\"},\"onServiceTermination(uint64,address)\":{\"notice\":\"Called when service is terminated\"},\"onSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is finalized and applied\"},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is queued but not yet applied\"},\"onUnregister(address)\":{\"notice\":\"Called when an operator unregisters from this blueprint\"},\"onUpdatePreferences(address,bytes)\":{\"notice\":\"Called when an operator updates their preferences (RPC address, etc.)\"},\"queryDeveloperPaymentAddress(uint64)\":{\"notice\":\"Get the developer payment address for a service\"},\"queryDisputeOrigin(uint64)\":{\"notice\":\"Query the account authorized to dispute slashes\"},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"notice\":\"Check if a payment asset is allowed for this blueprint\"},\"querySlashingOrigin(uint64)\":{\"notice\":\"Query the account authorized to propose slashes for a service\"},\"requiresAggregation(uint64,uint8)\":{\"notice\":\"Check if a job requires BLS aggregated results\"}},\"notice\":\"Full interface for blueprint-specific service managers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IBlueprintServiceManager.sol\":\"IBlueprintServiceManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IBlueprintServiceManager.sol\":{\"keccak256\":\"0x8efcdc767df09b461f233eb51059c0be599b9ac119197ae0390e83a34b78a969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23c79ce93ed37026696d1cef24501f413f4e05a813aa0b639fcd0ee2eddd3119\",\"dweb:/ipfs/Qmb2SQLTD3fx1A3JMpPa2E3aXe8uGiXFF5kCVjZHVHnEvc\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680\",\"dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canJoin","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canLeave","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"periodStart","type":"uint64"},{"internalType":"uint64","name":"periodEnd","type":"uint64"}],"stateMutability":"view","type":"function","name":"computeBillAdjustmentBps","outputs":[{"internalType":"uint16","name":"adjustmentBps","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"forceRemoveAllowsBelowMin","outputs":[{"internalType":"bool","name":"ok","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getAggregationThreshold","outputs":[{"internalType":"uint16","name":"thresholdBps","type":"uint16"},{"internalType":"uint8","name":"thresholdType","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatInterval","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"interval","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatThreshold","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint8","name":"threshold","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinOperatorStake","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint256","name":"minStake","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getNonPaymentTerminationPolicy","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"graceIntervals","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getRequiredResultCount","outputs":[{"internalType":"uint32","name":"required","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashingWindow","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"window","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"onAggregatedResult"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint8","name":"stakingPercent","type":"uint8"}],"stateMutability":"payable","type":"function","name":"onApprove"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BinaryVersion","name":"version","type":"tuple","components":[{"internalType":"uint64","name":"versionId","type":"uint64"},{"internalType":"bytes32","name":"sha256Hash","type":"bytes32"},{"internalType":"bytes32","name":"attestationHash","type":"bytes32"},{"internalType":"uint64","name":"publishedAt","type":"uint64"},{"internalType":"bool","name":"deprecated","type":"bool"}]},{"internalType":"string","name":"binaryUri","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"onBinaryVersionPublished"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"tangleCore","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onBlueprintCreated"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onExitCanceled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onExitScheduled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobCall"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"},{"internalType":"bytes","name":"outputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"versionId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorBinaryAcked"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorJoined"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorLeft"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onRegister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onReject"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"requestInputs","type":"bytes"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentAsset","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"onRequest"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onServiceInitialized"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onServiceTermination"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onUnappliedSlash"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onUnregister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"newPreferences","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onUpdatePreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDeveloperPaymentAddress","outputs":[{"internalType":"address payable","name":"developerPaymentAddress","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDisputeOrigin","outputs":[{"internalType":"address","name":"disputeOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"queryIsPaymentAssetAllowed","outputs":[{"internalType":"bool","name":"isAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"querySlashingOrigin","outputs":[{"internalType":"address","name":"slashingOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"requiresAggregation","outputs":[{"internalType":"bool","name":"required","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"canJoin(uint64,address)":{"details":"Called before operator joins - return false to reject","params":{"operator":"The operator wanting to join","serviceId":"The service ID"},"returns":{"allowed":"True if operator can join"}},"canLeave(uint64,address)":{"details":"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.","params":{"operator":"The operator wanting to leave","serviceId":"The service ID"},"returns":{"allowed":"True if operator can leave"}},"computeBillAdjustmentBps(uint64,uint64,uint64)":{"details":"Called by the protocol's permissionless bill trigger BEFORE drawing the bill from escrow, so a manager can implement uptime-based discounts, missed-result penalties, or any other quality-of-service feedback. The returned value is clamped to `[0, 10_000]` (`10_000` = no discount, `0` = bill is waived). Values above 10_000 cannot inflate the bill — a misbehaving manager cannot overcharge the customer. Reverting or being unimplemented yields the full bill.","params":{"periodEnd":"Exclusive timestamp of the billing window's end (= `lastPaymentAt + interval`)","periodStart":"Inclusive timestamp of the billing window's start (= prior `lastPaymentAt`)","serviceId":"Service being billed"},"returns":{"adjustmentBps":"Bill multiplier in basis points (10_000 = full bill)"}},"forceRemoveAllowsBelowMin(uint64)":{"details":"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).","params":{"serviceId":"The service ID"},"returns":{"ok":"True to allow eviction below the minimum operator count"}},"getAggregationThreshold(uint64,uint8)":{"details":"Only relevant if requiresAggregation returns true","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"thresholdBps":"Threshold in basis points (6700 = 67%)","thresholdType":"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)"}},"getExitConfig(uint64)":{"details":"Defines minimum commitment and exit queue timing","params":{"serviceId":"The service ID"},"returns":{"exitQueueDuration":"Time between scheduling exit and completing it (seconds)","forceExitAllowed":"Whether service owner can force-exit operators","minCommitmentDuration":"Minimum time operator must stay after joining (seconds)","useDefault":"True to use protocol default"}},"getHeartbeatInterval(uint64)":{"details":"Operators must submit heartbeats within this interval","params":{"serviceId":"The service ID"},"returns":{"interval":"Heartbeat interval in blocks (0 = disabled)","useDefault":"True to use protocol default, false to use custom value"}},"getHeartbeatThreshold(uint64)":{"details":"Percentage of operators that must respond within interval","params":{"serviceId":"The service ID"},"returns":{"threshold":"Threshold percentage (0-100)","useDefault":"True to use protocol default"}},"getMinOperatorStake()":{"details":"Called during operator registration to validate stake requirements","returns":{"minStake":"Custom minimum stake amount (only used if useDefault=false)","useDefault":"True to use protocol default from staking module"}},"getNonPaymentTerminationPolicy(uint64)":{"details":"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.","params":{"serviceId":"The service ID"},"returns":{"graceIntervals":"Additional full intervals to wait after first missed payment","useDefault":"True to use protocol default"}},"getRequiredResultCount(uint64,uint8)":{"details":"Override for consensus requirements (e.g., 2/3 majority)","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"Number of results needed (0 = service operator count)"}},"getSlashingWindow(uint64)":{"details":"Time window (in SECONDS) during which a proposed slash can be disputed before it becomes executable. Wired at slash-proposal time; a custom window is clamped to the protocol bounds [MIN_DISPUTE_WINDOW, MAX_DISPUTE_WINDOW]. Return useDefault=true to use the protocol-global window.","params":{"serviceId":"The service ID"},"returns":{"useDefault":"True to use protocol default","window":"Dispute window in seconds (clamped to protocol bounds)"}},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Validate the aggregated result, verify BLS signature, check threshold","params":{"aggregatedPubkey":"The aggregated public key of signers (G2 point)","aggregatedSignature":"The aggregated BLS signature (G1 point x, y)","job":"The job index","jobCallId":"The job call ID","output":"The aggregated output","serviceId":"The service ID","signerBitmap":"Bitmap of which operators signed"}},"onApprove(address,uint64,uint8)":{"params":{"operator":"The approving operator","requestId":"The request ID","stakingPercent":"Percentage of stake committed to this service (0-100)"}},"onBinaryVersionPublished(uint64,(uint64,bytes32,bytes32,uint64,bool),string)":{"details":"Custom BSMs MAY revert to gate the publish (e.g. require a publisher-multisig sig). Tangle forwards this call best-effort via `_tryCallManager`, so a revert is observed off-chain via `ManagerHookFailed` but does NOT undo the on-chain version row — the registry is append-only by design."},"onBlueprintCreated(uint64,address,address)":{"details":"Store the blueprintId and tangleCore address for future reference","params":{"blueprintId":"The new blueprint ID","owner":"The blueprint owner","tangleCore":"The address of the Tangle core contract"}},"onExitCanceled(uint64,address)":{"params":{"operator":"The operator canceling exit","serviceId":"The service ID"}},"onExitScheduled(uint64,address,uint64)":{"details":"Allows manager to track pending exits, notify other parties, etc.","params":{"executeAfter":"Timestamp when exit can be executed","operator":"The operator scheduling exit","serviceId":"The service ID"}},"onJobCall(uint64,uint8,uint64,bytes)":{"details":"Validate job inputs, check caller permissions, etc.","params":{"inputs":"Job inputs (blueprint-specific encoding)","job":"The job index in the blueprint","jobCallId":"Unique ID for this job call","serviceId":"The service ID"}},"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)":{"details":"Validate result format, check operator eligibility, aggregate results","params":{"inputsHash":"keccak256 of the original job inputs. The raw inputs are delivered to the manager at submit time via `onJobCall`; a BSM that needs them at result time caches them there and verifies against this hash (they also ride the JobSubmitted event).","job":"The job index","jobCallId":"The job call ID","operator":"The operator submitting","outputs":"Result outputs (blueprint-specific encoding)","serviceId":"The service ID"}},"onOperatorBinaryAcked(uint64,uint64,address)":{"details":"Default no-op; custom BSMs MAY react (e.g. emit reputation events, gate future job dispatch on the ack). Forwarded best-effort."},"onOperatorJoined(uint64,address,uint16)":{"params":{"exposureBps":"The operator's stake exposure in basis points","operator":"The operator that joined","serviceId":"The service ID"}},"onOperatorLeft(uint64,address)":{"params":{"operator":"The operator that left","serviceId":"The service ID"}},"onRegister(address,bytes)":{"details":"Validate operator requirements here (stake, reputation, etc.)","params":{"operator":"The operator's address","registrationInputs":"Custom registration data (blueprint-specific encoding)"}},"onReject(address,uint64)":{"params":{"operator":"The rejecting operator","requestId":"The request ID"}},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"details":"Validate service configuration, operator selection, payment amount","params":{"operators":"Requested operators","paymentAmount":"Payment amount","paymentAsset":"Payment token address (address(0) for native)","requestId":"The request ID","requestInputs":"Service configuration (blueprint-specific encoding)","requester":"Who is requesting the service","ttl":"Time-to-live for the service"}},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"params":{"blueprintId":"The blueprint ID","owner":"The service owner","permittedCallers":"Addresses allowed to submit jobs","requestId":"The original request ID","serviceId":"The new service ID","ttl":"Service time-to-live"}},"onServiceTermination(uint64,address)":{"params":{"owner":"The service owner","serviceId":"The service ID"}},"onSlash(uint64,bytes,uint8)":{"params":{"offender":"The slashed operator","serviceId":"The service ID","slashPercent":"Percentage slashed"}},"onUnappliedSlash(uint64,bytes,uint8)":{"details":"This is the dispute window - gather evidence, notify parties","params":{"offender":"The operator being slashed (encoded as bytes for flexibility)","serviceId":"The service ID","slashPercent":"Percentage of stake to slash"}},"onUnregister(address)":{"params":{"operator":"The operator's address"}},"onUpdatePreferences(address,bytes)":{"params":{"newPreferences":"Updated preferences data","operator":"The operator's address"}},"queryDeveloperPaymentAddress(uint64)":{"details":"Override to route payments to different addresses per service","params":{"serviceId":"The service ID"},"returns":{"developerPaymentAddress":"Address to receive developer share"}},"queryDisputeOrigin(uint64)":{"details":"Override to designate a custom dispute resolver (e.g. a dispute contract). This account may dispute a pending slash on this service bondless, like SLASH_ADMIN, and escalates it to admin resolution. It cannot dispute a slash it proposed itself. Return address(0) to disable the custom dispute path (operator + SLASH_ADMIN only).","params":{"serviceId":"The service ID"},"returns":{"disputeOrigin":"Address that can dispute (default: this contract)"}},"queryIsPaymentAssetAllowed(uint64,address)":{"params":{"asset":"The payment asset address (address(0) for native)","serviceId":"The service ID"},"returns":{"isAllowed":"True if the asset can be used for payment"}},"querySlashingOrigin(uint64)":{"details":"Override to allow custom slashing authorities (dispute contracts, etc.)","params":{"serviceId":"The service ID"},"returns":{"slashingOrigin":"Address that can slash (default: this contract)"}},"requiresAggregation(uint64,uint8)":{"details":"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"True if BLS aggregation is required for this job"}}},"version":1},"userdoc":{"kind":"user","methods":{"canJoin(uint64,address)":{"notice":"Check if an operator can join a dynamic service"},"canLeave(uint64,address)":{"notice":"Check if an operator can leave a dynamic service"},"computeBillAdjustmentBps(uint64,uint64,uint64)":{"notice":"Scale the nominal subscription bill for a period by an SLA / quality factor."},"forceRemoveAllowsBelowMin(uint64)":{"notice":"Whether `forceRemoveOperator` may drop the service below `minOperators`."},"getAggregationThreshold(uint64,uint8)":{"notice":"Get the aggregation threshold configuration for a job"},"getExitConfig(uint64)":{"notice":"Get the exit configuration for operator departures"},"getHeartbeatInterval(uint64)":{"notice":"Get the heartbeat interval for a service"},"getHeartbeatThreshold(uint64)":{"notice":"Get the heartbeat threshold for a service"},"getMinOperatorStake()":{"notice":"Get the minimum stake required for operators to register for this blueprint"},"getNonPaymentTerminationPolicy(uint64)":{"notice":"Get non-payment termination policy for subscription services"},"getRequiredResultCount(uint64,uint8)":{"notice":"Get the number of results required to complete a job"},"getSlashingWindow(uint64)":{"notice":"Get the dispute window for a service's slashes"},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Called when an aggregated job result is submitted"},"onApprove(address,uint64,uint8)":{"notice":"Called when an operator approves a service request"},"onBinaryVersionPublished(uint64,(uint64,bytes32,bytes32,uint64,bool),string)":{"notice":"Called when a new binary version is published for this blueprint"},"onBlueprintCreated(uint64,address,address)":{"notice":"Called when blueprint is created"},"onExitCanceled(uint64,address)":{"notice":"Called when an operator cancels their scheduled exit"},"onExitScheduled(uint64,address,uint64)":{"notice":"Called when an operator schedules their exit from a service"},"onJobCall(uint64,uint8,uint64,bytes)":{"notice":"Called when a job is submitted"},"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)":{"notice":"Called when an operator submits a job result"},"onOperatorBinaryAcked(uint64,uint64,address)":{"notice":"Called when an operator acknowledges a binary version for a service"},"onOperatorJoined(uint64,address,uint16)":{"notice":"Called after an operator successfully joins a service"},"onOperatorLeft(uint64,address)":{"notice":"Called after an operator successfully leaves a service"},"onRegister(address,bytes)":{"notice":"Called when an operator registers to this blueprint"},"onReject(address,uint64)":{"notice":"Called when an operator rejects a service request"},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"notice":"Called when a service is requested"},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"notice":"Called when service becomes active (all operators approved)"},"onServiceTermination(uint64,address)":{"notice":"Called when service is terminated"},"onSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is finalized and applied"},"onUnappliedSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is queued but not yet applied"},"onUnregister(address)":{"notice":"Called when an operator unregisters from this blueprint"},"onUpdatePreferences(address,bytes)":{"notice":"Called when an operator updates their preferences (RPC address, etc.)"},"queryDeveloperPaymentAddress(uint64)":{"notice":"Get the developer payment address for a service"},"queryDisputeOrigin(uint64)":{"notice":"Query the account authorized to dispute slashes"},"queryIsPaymentAssetAllowed(uint64,address)":{"notice":"Check if a payment asset is allowed for this blueprint"},"querySlashingOrigin(uint64)":{"notice":"Query the account authorized to propose slashes for a service"},"requiresAggregation(uint64,uint8)":{"notice":"Check if a job requires BLS aggregated results"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IBlueprintServiceManager.sol":"IBlueprintServiceManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IBlueprintServiceManager.sol":{"keccak256":"0x8efcdc767df09b461f233eb51059c0be599b9ac119197ae0390e83a34b78a969","urls":["bzz-raw://23c79ce93ed37026696d1cef24501f413f4e05a813aa0b639fcd0ee2eddd3119","dweb:/ipfs/Qmb2SQLTD3fx1A3JMpPa2E3aXe8uGiXFF5kCVjZHVHnEvc"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8","urls":["bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680","dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file +{"abi":[{"type":"function","name":"canJoin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canLeave","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"computeBillAdjustmentBps","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"periodStart","type":"uint64","internalType":"uint64"},{"name":"periodEnd","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"adjustmentBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"forceRemoveAllowsBelowMin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ok","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAggregationThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"thresholdBps","type":"uint16","internalType":"uint16"},{"name":"thresholdType","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatInterval","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"interval","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"threshold","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getMinOperatorStake","inputs":[],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNonPaymentTerminationPolicy","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"graceIntervals","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRequiredResultCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getSlashingWindow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"window","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"onAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onApprove","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"stakingPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onBinaryVersionPublished","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"version","type":"tuple","internalType":"struct Types.BinaryVersion","components":[{"name":"versionId","type":"uint64","internalType":"uint64"},{"name":"publishedAt","type":"uint64","internalType":"uint64"},{"name":"deprecated","type":"bool","internalType":"bool"},{"name":"sha256Hash","type":"bytes32","internalType":"bytes32"},{"name":"attestationHash","type":"bytes32","internalType":"bytes32"}]},{"name":"binaryUri","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onBlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"tangleCore","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitCanceled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitScheduled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onJobResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"},{"name":"outputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onOperatorBinaryAcked","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"versionId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorJoined","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorLeft","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRegister","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onReject","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"requestInputs","type":"bytes","internalType":"bytes"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentAsset","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onServiceInitialized","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onServiceTermination","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnappliedSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnregister","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUpdatePreferences","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"newPreferences","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"queryDeveloperPaymentAddress","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"developerPaymentAddress","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"queryDisputeOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"disputeOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"queryIsPaymentAssetAllowed","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"isAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"querySlashingOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"slashingOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requiresAggregation","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canJoin(uint64,address)":"b47242e8","canLeave(uint64,address)":"e518de76","computeBillAdjustmentBps(uint64,uint64,uint64)":"f93ff2b7","forceRemoveAllowsBelowMin(uint64)":"f3e28f32","getAggregationThreshold(uint64,uint8)":"25fcc64e","getExitConfig(uint64)":"d2672ed4","getHeartbeatInterval(uint64)":"0068080b","getHeartbeatThreshold(uint64)":"92cbb78e","getMinOperatorStake()":"54dce6c2","getNonPaymentTerminationPolicy(uint64)":"71e8e85d","getRequiredResultCount(uint64,uint8)":"4c443e04","getSlashingWindow(uint64)":"3fdadfcc","onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":"158bb2eb","onApprove(address,uint64,uint8)":"b159eb34","onBinaryVersionPublished(uint64,(uint64,uint64,bool,bytes32,bytes32),string)":"15034413","onBlueprintCreated(uint64,address,address)":"0b6535d7","onExitCanceled(uint64,address)":"5440662c","onExitScheduled(uint64,address,uint64)":"e0559c63","onJobCall(uint64,uint8,uint64,bytes)":"9838caa3","onJobResult(uint64,uint8,uint64,address,bytes32,bytes)":"e649fc03","onOperatorBinaryAcked(uint64,uint64,address)":"cd81472b","onOperatorJoined(uint64,address,uint16)":"9aa26a92","onOperatorLeft(uint64,address)":"965d231b","onRegister(address,bytes)":"67793cc6","onReject(address,uint64)":"c9cd4a18","onRequest(uint64,address,address[],bytes,uint64,address,uint256)":"c28cd812","onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":"82a1ece4","onServiceTermination(uint64,address)":"a24e8a90","onSlash(uint64,bytes,uint8)":"7e14b919","onUnappliedSlash(uint64,bytes,uint8)":"0881898f","onUnregister(address)":"151a4576","onUpdatePreferences(address,bytes)":"f58e2066","queryDeveloperPaymentAddress(uint64)":"08179f35","queryDisputeOrigin(uint64)":"14b4df4c","queryIsPaymentAssetAllowed(uint64,address)":"e390fcdb","querySlashingOrigin(uint64)":"74ceeb55","requiresAggregation(uint64,uint8)":"19ed5bb2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canLeave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"periodStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"periodEnd\",\"type\":\"uint64\"}],\"name\":\"computeBillAdjustmentBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"adjustmentBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"forceRemoveAllowsBelowMin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ok\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getAggregationThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"thresholdBps\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"thresholdType\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatInterval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatThreshold\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinOperatorStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getNonPaymentTerminationPolicy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"graceIntervals\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getRequiredResultCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"required\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashingWindow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"window\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"onAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"stakingPercent\",\"type\":\"uint8\"}],\"name\":\"onApprove\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"versionId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"publishedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"deprecated\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sha256Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attestationHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BinaryVersion\",\"name\":\"version\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"binaryUri\",\"type\":\"string\"}],\"name\":\"onBinaryVersionPublished\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tangleCore\",\"type\":\"address\"}],\"name\":\"onBlueprintCreated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onExitCanceled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"onExitScheduled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"onJobCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"outputs\",\"type\":\"bytes\"}],\"name\":\"onJobResult\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"versionId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorBinaryAcked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"onOperatorJoined\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorLeft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"onRegister\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"onReject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"requestInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"name\":\"onRequest\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"onServiceInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"onServiceTermination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onUnappliedSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onUnregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newPreferences\",\"type\":\"bytes\"}],\"name\":\"onUpdatePreferences\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDeveloperPaymentAddress\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"developerPaymentAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDisputeOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"disputeOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"queryIsPaymentAssetAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"querySlashingOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"slashingOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"requiresAggregation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Blueprint developers implement this to customize all aspects of their blueprint. This is the primary integration point for blueprint developers - implement the hooks you need and leave others as default (via BlueprintServiceManagerBase). The lifecycle flow: 1. Blueprint created \\u2192 onBlueprintCreated 2. Operators register \\u2192 onRegister 3. Service requested \\u2192 onRequest 4. Operators approve \\u2192 onApprove 5. Service activated \\u2192 onServiceInitialized 6. Jobs submitted \\u2192 onJobCall 7. Results submitted \\u2192 onJobResult 8. Service terminated \\u2192 onServiceTermination\",\"kind\":\"dev\",\"methods\":{\"canJoin(uint64,address)\":{\"details\":\"Called before operator joins - return false to reject\",\"params\":{\"operator\":\"The operator wanting to join\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can join\"}},\"canLeave(uint64,address)\":{\"details\":\"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.\",\"params\":{\"operator\":\"The operator wanting to leave\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can leave\"}},\"computeBillAdjustmentBps(uint64,uint64,uint64)\":{\"details\":\"Called by the protocol's permissionless bill trigger BEFORE drawing the bill from escrow, so a manager can implement uptime-based discounts, missed-result penalties, or any other quality-of-service feedback. The returned value is clamped to `[0, 10_000]` (`10_000` = no discount, `0` = bill is waived). Values above 10_000 cannot inflate the bill \\u2014 a misbehaving manager cannot overcharge the customer. Reverting or being unimplemented yields the full bill.\",\"params\":{\"periodEnd\":\"Exclusive timestamp of the billing window's end (= `lastPaymentAt + interval`)\",\"periodStart\":\"Inclusive timestamp of the billing window's start (= prior `lastPaymentAt`)\",\"serviceId\":\"Service being billed\"},\"returns\":{\"adjustmentBps\":\"Bill multiplier in basis points (10_000 = full bill)\"}},\"forceRemoveAllowsBelowMin(uint64)\":{\"details\":\"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"ok\":\"True to allow eviction below the minimum operator count\"}},\"getAggregationThreshold(uint64,uint8)\":{\"details\":\"Only relevant if requiresAggregation returns true\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"thresholdBps\":\"Threshold in basis points (6700 = 67%)\",\"thresholdType\":\"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)\"}},\"getExitConfig(uint64)\":{\"details\":\"Defines minimum commitment and exit queue timing\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"exitQueueDuration\":\"Time between scheduling exit and completing it (seconds)\",\"forceExitAllowed\":\"Whether service owner can force-exit operators\",\"minCommitmentDuration\":\"Minimum time operator must stay after joining (seconds)\",\"useDefault\":\"True to use protocol default\"}},\"getHeartbeatInterval(uint64)\":{\"details\":\"Operators must submit heartbeats within this interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"interval\":\"Heartbeat interval in blocks (0 = disabled)\",\"useDefault\":\"True to use protocol default, false to use custom value\"}},\"getHeartbeatThreshold(uint64)\":{\"details\":\"Percentage of operators that must respond within interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"threshold\":\"Threshold percentage (0-100)\",\"useDefault\":\"True to use protocol default\"}},\"getMinOperatorStake()\":{\"details\":\"Called during operator registration to validate stake requirements\",\"returns\":{\"minStake\":\"Custom minimum stake amount (only used if useDefault=false)\",\"useDefault\":\"True to use protocol default from staking module\"}},\"getNonPaymentTerminationPolicy(uint64)\":{\"details\":\"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"graceIntervals\":\"Additional full intervals to wait after first missed payment\",\"useDefault\":\"True to use protocol default\"}},\"getRequiredResultCount(uint64,uint8)\":{\"details\":\"Override for consensus requirements (e.g., 2/3 majority)\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"Number of results needed (0 = service operator count)\"}},\"getSlashingWindow(uint64)\":{\"details\":\"Time window (in SECONDS) during which a proposed slash can be disputed before it becomes executable. Wired at slash-proposal time; a custom window is clamped to the protocol bounds [MIN_DISPUTE_WINDOW, MAX_DISPUTE_WINDOW]. Return useDefault=true to use the protocol-global window.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"useDefault\":\"True to use protocol default\",\"window\":\"Dispute window in seconds (clamped to protocol bounds)\"}},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Validate the aggregated result, verify BLS signature, check threshold\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key of signers (G2 point)\",\"aggregatedSignature\":\"The aggregated BLS signature (G1 point x, y)\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"output\":\"The aggregated output\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap of which operators signed\"}},\"onApprove(address,uint64,uint8)\":{\"params\":{\"operator\":\"The approving operator\",\"requestId\":\"The request ID\",\"stakingPercent\":\"Percentage of stake committed to this service (0-100)\"}},\"onBinaryVersionPublished(uint64,(uint64,uint64,bool,bytes32,bytes32),string)\":{\"details\":\"Custom BSMs MAY revert to gate the publish (e.g. require a publisher-multisig sig). Tangle forwards this call best-effort via `_tryCallManager`, so a revert is observed off-chain via `ManagerHookFailed` but does NOT undo the on-chain version row \\u2014 the registry is append-only by design.\"},\"onBlueprintCreated(uint64,address,address)\":{\"details\":\"Store the blueprintId and tangleCore address for future reference\",\"params\":{\"blueprintId\":\"The new blueprint ID\",\"owner\":\"The blueprint owner\",\"tangleCore\":\"The address of the Tangle core contract\"}},\"onExitCanceled(uint64,address)\":{\"params\":{\"operator\":\"The operator canceling exit\",\"serviceId\":\"The service ID\"}},\"onExitScheduled(uint64,address,uint64)\":{\"details\":\"Allows manager to track pending exits, notify other parties, etc.\",\"params\":{\"executeAfter\":\"Timestamp when exit can be executed\",\"operator\":\"The operator scheduling exit\",\"serviceId\":\"The service ID\"}},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"details\":\"Validate job inputs, check caller permissions, etc.\",\"params\":{\"inputs\":\"Job inputs (blueprint-specific encoding)\",\"job\":\"The job index in the blueprint\",\"jobCallId\":\"Unique ID for this job call\",\"serviceId\":\"The service ID\"}},\"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)\":{\"details\":\"Validate result format, check operator eligibility, aggregate results\",\"params\":{\"inputsHash\":\"keccak256 of the original job inputs. The raw inputs are delivered to the manager at submit time via `onJobCall`; a BSM that needs them at result time caches them there and verifies against this hash (they also ride the JobSubmitted event).\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"operator\":\"The operator submitting\",\"outputs\":\"Result outputs (blueprint-specific encoding)\",\"serviceId\":\"The service ID\"}},\"onOperatorBinaryAcked(uint64,uint64,address)\":{\"details\":\"Default no-op; custom BSMs MAY react (e.g. emit reputation events, gate future job dispatch on the ack). Forwarded best-effort.\"},\"onOperatorJoined(uint64,address,uint16)\":{\"params\":{\"exposureBps\":\"The operator's stake exposure in basis points\",\"operator\":\"The operator that joined\",\"serviceId\":\"The service ID\"}},\"onOperatorLeft(uint64,address)\":{\"params\":{\"operator\":\"The operator that left\",\"serviceId\":\"The service ID\"}},\"onRegister(address,bytes)\":{\"details\":\"Validate operator requirements here (stake, reputation, etc.)\",\"params\":{\"operator\":\"The operator's address\",\"registrationInputs\":\"Custom registration data (blueprint-specific encoding)\"}},\"onReject(address,uint64)\":{\"params\":{\"operator\":\"The rejecting operator\",\"requestId\":\"The request ID\"}},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"details\":\"Validate service configuration, operator selection, payment amount\",\"params\":{\"operators\":\"Requested operators\",\"paymentAmount\":\"Payment amount\",\"paymentAsset\":\"Payment token address (address(0) for native)\",\"requestId\":\"The request ID\",\"requestInputs\":\"Service configuration (blueprint-specific encoding)\",\"requester\":\"Who is requesting the service\",\"ttl\":\"Time-to-live for the service\"}},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"owner\":\"The service owner\",\"permittedCallers\":\"Addresses allowed to submit jobs\",\"requestId\":\"The original request ID\",\"serviceId\":\"The new service ID\",\"ttl\":\"Service time-to-live\"}},\"onServiceTermination(uint64,address)\":{\"params\":{\"owner\":\"The service owner\",\"serviceId\":\"The service ID\"}},\"onSlash(uint64,bytes,uint8)\":{\"params\":{\"offender\":\"The slashed operator\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage slashed\"}},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"details\":\"This is the dispute window - gather evidence, notify parties\",\"params\":{\"offender\":\"The operator being slashed (encoded as bytes for flexibility)\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage of stake to slash\"}},\"onUnregister(address)\":{\"params\":{\"operator\":\"The operator's address\"}},\"onUpdatePreferences(address,bytes)\":{\"params\":{\"newPreferences\":\"Updated preferences data\",\"operator\":\"The operator's address\"}},\"queryDeveloperPaymentAddress(uint64)\":{\"details\":\"Override to route payments to different addresses per service\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"developerPaymentAddress\":\"Address to receive developer share\"}},\"queryDisputeOrigin(uint64)\":{\"details\":\"Override to designate a custom dispute resolver (e.g. a dispute contract). This account may dispute a pending slash on this service bondless, like SLASH_ADMIN, and escalates it to admin resolution. It cannot dispute a slash it proposed itself. Return address(0) to disable the custom dispute path (operator + SLASH_ADMIN only).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"disputeOrigin\":\"Address that can dispute (default: this contract)\"}},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"params\":{\"asset\":\"The payment asset address (address(0) for native)\",\"serviceId\":\"The service ID\"},\"returns\":{\"isAllowed\":\"True if the asset can be used for payment\"}},\"querySlashingOrigin(uint64)\":{\"details\":\"Override to allow custom slashing authorities (dispute contracts, etc.)\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"slashingOrigin\":\"Address that can slash (default: this contract)\"}},\"requiresAggregation(uint64,uint8)\":{\"details\":\"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"True if BLS aggregation is required for this job\"}}},\"title\":\"IBlueprintServiceManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canJoin(uint64,address)\":{\"notice\":\"Check if an operator can join a dynamic service\"},\"canLeave(uint64,address)\":{\"notice\":\"Check if an operator can leave a dynamic service\"},\"computeBillAdjustmentBps(uint64,uint64,uint64)\":{\"notice\":\"Scale the nominal subscription bill for a period by an SLA / quality factor.\"},\"forceRemoveAllowsBelowMin(uint64)\":{\"notice\":\"Whether `forceRemoveOperator` may drop the service below `minOperators`.\"},\"getAggregationThreshold(uint64,uint8)\":{\"notice\":\"Get the aggregation threshold configuration for a job\"},\"getExitConfig(uint64)\":{\"notice\":\"Get the exit configuration for operator departures\"},\"getHeartbeatInterval(uint64)\":{\"notice\":\"Get the heartbeat interval for a service\"},\"getHeartbeatThreshold(uint64)\":{\"notice\":\"Get the heartbeat threshold for a service\"},\"getMinOperatorStake()\":{\"notice\":\"Get the minimum stake required for operators to register for this blueprint\"},\"getNonPaymentTerminationPolicy(uint64)\":{\"notice\":\"Get non-payment termination policy for subscription services\"},\"getRequiredResultCount(uint64,uint8)\":{\"notice\":\"Get the number of results required to complete a job\"},\"getSlashingWindow(uint64)\":{\"notice\":\"Get the dispute window for a service's slashes\"},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Called when an aggregated job result is submitted\"},\"onApprove(address,uint64,uint8)\":{\"notice\":\"Called when an operator approves a service request\"},\"onBinaryVersionPublished(uint64,(uint64,uint64,bool,bytes32,bytes32),string)\":{\"notice\":\"Called when a new binary version is published for this blueprint\"},\"onBlueprintCreated(uint64,address,address)\":{\"notice\":\"Called when blueprint is created\"},\"onExitCanceled(uint64,address)\":{\"notice\":\"Called when an operator cancels their scheduled exit\"},\"onExitScheduled(uint64,address,uint64)\":{\"notice\":\"Called when an operator schedules their exit from a service\"},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"notice\":\"Called when a job is submitted\"},\"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)\":{\"notice\":\"Called when an operator submits a job result\"},\"onOperatorBinaryAcked(uint64,uint64,address)\":{\"notice\":\"Called when an operator acknowledges a binary version for a service\"},\"onOperatorJoined(uint64,address,uint16)\":{\"notice\":\"Called after an operator successfully joins a service\"},\"onOperatorLeft(uint64,address)\":{\"notice\":\"Called after an operator successfully leaves a service\"},\"onRegister(address,bytes)\":{\"notice\":\"Called when an operator registers to this blueprint\"},\"onReject(address,uint64)\":{\"notice\":\"Called when an operator rejects a service request\"},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"notice\":\"Called when a service is requested\"},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"notice\":\"Called when service becomes active (all operators approved)\"},\"onServiceTermination(uint64,address)\":{\"notice\":\"Called when service is terminated\"},\"onSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is finalized and applied\"},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is queued but not yet applied\"},\"onUnregister(address)\":{\"notice\":\"Called when an operator unregisters from this blueprint\"},\"onUpdatePreferences(address,bytes)\":{\"notice\":\"Called when an operator updates their preferences (RPC address, etc.)\"},\"queryDeveloperPaymentAddress(uint64)\":{\"notice\":\"Get the developer payment address for a service\"},\"queryDisputeOrigin(uint64)\":{\"notice\":\"Query the account authorized to dispute slashes\"},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"notice\":\"Check if a payment asset is allowed for this blueprint\"},\"querySlashingOrigin(uint64)\":{\"notice\":\"Query the account authorized to propose slashes for a service\"},\"requiresAggregation(uint64,uint8)\":{\"notice\":\"Check if a job requires BLS aggregated results\"}},\"notice\":\"Full interface for blueprint-specific service managers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IBlueprintServiceManager.sol\":\"IBlueprintServiceManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IBlueprintServiceManager.sol\":{\"keccak256\":\"0x8efcdc767df09b461f233eb51059c0be599b9ac119197ae0390e83a34b78a969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23c79ce93ed37026696d1cef24501f413f4e05a813aa0b639fcd0ee2eddd3119\",\"dweb:/ipfs/Qmb2SQLTD3fx1A3JMpPa2E3aXe8uGiXFF5kCVjZHVHnEvc\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canJoin","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canLeave","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"periodStart","type":"uint64"},{"internalType":"uint64","name":"periodEnd","type":"uint64"}],"stateMutability":"view","type":"function","name":"computeBillAdjustmentBps","outputs":[{"internalType":"uint16","name":"adjustmentBps","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"forceRemoveAllowsBelowMin","outputs":[{"internalType":"bool","name":"ok","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getAggregationThreshold","outputs":[{"internalType":"uint16","name":"thresholdBps","type":"uint16"},{"internalType":"uint8","name":"thresholdType","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatInterval","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"interval","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatThreshold","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint8","name":"threshold","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinOperatorStake","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint256","name":"minStake","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getNonPaymentTerminationPolicy","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"graceIntervals","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getRequiredResultCount","outputs":[{"internalType":"uint32","name":"required","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashingWindow","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"window","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"onAggregatedResult"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint8","name":"stakingPercent","type":"uint8"}],"stateMutability":"payable","type":"function","name":"onApprove"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BinaryVersion","name":"version","type":"tuple","components":[{"internalType":"uint64","name":"versionId","type":"uint64"},{"internalType":"uint64","name":"publishedAt","type":"uint64"},{"internalType":"bool","name":"deprecated","type":"bool"},{"internalType":"bytes32","name":"sha256Hash","type":"bytes32"},{"internalType":"bytes32","name":"attestationHash","type":"bytes32"}]},{"internalType":"string","name":"binaryUri","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"onBinaryVersionPublished"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"tangleCore","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onBlueprintCreated"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onExitCanceled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onExitScheduled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobCall"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"},{"internalType":"bytes","name":"outputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"versionId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorBinaryAcked"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorJoined"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorLeft"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onRegister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onReject"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"requestInputs","type":"bytes"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentAsset","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"onRequest"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onServiceInitialized"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onServiceTermination"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onUnappliedSlash"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onUnregister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"newPreferences","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onUpdatePreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDeveloperPaymentAddress","outputs":[{"internalType":"address payable","name":"developerPaymentAddress","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDisputeOrigin","outputs":[{"internalType":"address","name":"disputeOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"queryIsPaymentAssetAllowed","outputs":[{"internalType":"bool","name":"isAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"querySlashingOrigin","outputs":[{"internalType":"address","name":"slashingOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"requiresAggregation","outputs":[{"internalType":"bool","name":"required","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"canJoin(uint64,address)":{"details":"Called before operator joins - return false to reject","params":{"operator":"The operator wanting to join","serviceId":"The service ID"},"returns":{"allowed":"True if operator can join"}},"canLeave(uint64,address)":{"details":"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.","params":{"operator":"The operator wanting to leave","serviceId":"The service ID"},"returns":{"allowed":"True if operator can leave"}},"computeBillAdjustmentBps(uint64,uint64,uint64)":{"details":"Called by the protocol's permissionless bill trigger BEFORE drawing the bill from escrow, so a manager can implement uptime-based discounts, missed-result penalties, or any other quality-of-service feedback. The returned value is clamped to `[0, 10_000]` (`10_000` = no discount, `0` = bill is waived). Values above 10_000 cannot inflate the bill — a misbehaving manager cannot overcharge the customer. Reverting or being unimplemented yields the full bill.","params":{"periodEnd":"Exclusive timestamp of the billing window's end (= `lastPaymentAt + interval`)","periodStart":"Inclusive timestamp of the billing window's start (= prior `lastPaymentAt`)","serviceId":"Service being billed"},"returns":{"adjustmentBps":"Bill multiplier in basis points (10_000 = full bill)"}},"forceRemoveAllowsBelowMin(uint64)":{"details":"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).","params":{"serviceId":"The service ID"},"returns":{"ok":"True to allow eviction below the minimum operator count"}},"getAggregationThreshold(uint64,uint8)":{"details":"Only relevant if requiresAggregation returns true","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"thresholdBps":"Threshold in basis points (6700 = 67%)","thresholdType":"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)"}},"getExitConfig(uint64)":{"details":"Defines minimum commitment and exit queue timing","params":{"serviceId":"The service ID"},"returns":{"exitQueueDuration":"Time between scheduling exit and completing it (seconds)","forceExitAllowed":"Whether service owner can force-exit operators","minCommitmentDuration":"Minimum time operator must stay after joining (seconds)","useDefault":"True to use protocol default"}},"getHeartbeatInterval(uint64)":{"details":"Operators must submit heartbeats within this interval","params":{"serviceId":"The service ID"},"returns":{"interval":"Heartbeat interval in blocks (0 = disabled)","useDefault":"True to use protocol default, false to use custom value"}},"getHeartbeatThreshold(uint64)":{"details":"Percentage of operators that must respond within interval","params":{"serviceId":"The service ID"},"returns":{"threshold":"Threshold percentage (0-100)","useDefault":"True to use protocol default"}},"getMinOperatorStake()":{"details":"Called during operator registration to validate stake requirements","returns":{"minStake":"Custom minimum stake amount (only used if useDefault=false)","useDefault":"True to use protocol default from staking module"}},"getNonPaymentTerminationPolicy(uint64)":{"details":"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.","params":{"serviceId":"The service ID"},"returns":{"graceIntervals":"Additional full intervals to wait after first missed payment","useDefault":"True to use protocol default"}},"getRequiredResultCount(uint64,uint8)":{"details":"Override for consensus requirements (e.g., 2/3 majority)","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"Number of results needed (0 = service operator count)"}},"getSlashingWindow(uint64)":{"details":"Time window (in SECONDS) during which a proposed slash can be disputed before it becomes executable. Wired at slash-proposal time; a custom window is clamped to the protocol bounds [MIN_DISPUTE_WINDOW, MAX_DISPUTE_WINDOW]. Return useDefault=true to use the protocol-global window.","params":{"serviceId":"The service ID"},"returns":{"useDefault":"True to use protocol default","window":"Dispute window in seconds (clamped to protocol bounds)"}},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Validate the aggregated result, verify BLS signature, check threshold","params":{"aggregatedPubkey":"The aggregated public key of signers (G2 point)","aggregatedSignature":"The aggregated BLS signature (G1 point x, y)","job":"The job index","jobCallId":"The job call ID","output":"The aggregated output","serviceId":"The service ID","signerBitmap":"Bitmap of which operators signed"}},"onApprove(address,uint64,uint8)":{"params":{"operator":"The approving operator","requestId":"The request ID","stakingPercent":"Percentage of stake committed to this service (0-100)"}},"onBinaryVersionPublished(uint64,(uint64,uint64,bool,bytes32,bytes32),string)":{"details":"Custom BSMs MAY revert to gate the publish (e.g. require a publisher-multisig sig). Tangle forwards this call best-effort via `_tryCallManager`, so a revert is observed off-chain via `ManagerHookFailed` but does NOT undo the on-chain version row — the registry is append-only by design."},"onBlueprintCreated(uint64,address,address)":{"details":"Store the blueprintId and tangleCore address for future reference","params":{"blueprintId":"The new blueprint ID","owner":"The blueprint owner","tangleCore":"The address of the Tangle core contract"}},"onExitCanceled(uint64,address)":{"params":{"operator":"The operator canceling exit","serviceId":"The service ID"}},"onExitScheduled(uint64,address,uint64)":{"details":"Allows manager to track pending exits, notify other parties, etc.","params":{"executeAfter":"Timestamp when exit can be executed","operator":"The operator scheduling exit","serviceId":"The service ID"}},"onJobCall(uint64,uint8,uint64,bytes)":{"details":"Validate job inputs, check caller permissions, etc.","params":{"inputs":"Job inputs (blueprint-specific encoding)","job":"The job index in the blueprint","jobCallId":"Unique ID for this job call","serviceId":"The service ID"}},"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)":{"details":"Validate result format, check operator eligibility, aggregate results","params":{"inputsHash":"keccak256 of the original job inputs. The raw inputs are delivered to the manager at submit time via `onJobCall`; a BSM that needs them at result time caches them there and verifies against this hash (they also ride the JobSubmitted event).","job":"The job index","jobCallId":"The job call ID","operator":"The operator submitting","outputs":"Result outputs (blueprint-specific encoding)","serviceId":"The service ID"}},"onOperatorBinaryAcked(uint64,uint64,address)":{"details":"Default no-op; custom BSMs MAY react (e.g. emit reputation events, gate future job dispatch on the ack). Forwarded best-effort."},"onOperatorJoined(uint64,address,uint16)":{"params":{"exposureBps":"The operator's stake exposure in basis points","operator":"The operator that joined","serviceId":"The service ID"}},"onOperatorLeft(uint64,address)":{"params":{"operator":"The operator that left","serviceId":"The service ID"}},"onRegister(address,bytes)":{"details":"Validate operator requirements here (stake, reputation, etc.)","params":{"operator":"The operator's address","registrationInputs":"Custom registration data (blueprint-specific encoding)"}},"onReject(address,uint64)":{"params":{"operator":"The rejecting operator","requestId":"The request ID"}},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"details":"Validate service configuration, operator selection, payment amount","params":{"operators":"Requested operators","paymentAmount":"Payment amount","paymentAsset":"Payment token address (address(0) for native)","requestId":"The request ID","requestInputs":"Service configuration (blueprint-specific encoding)","requester":"Who is requesting the service","ttl":"Time-to-live for the service"}},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"params":{"blueprintId":"The blueprint ID","owner":"The service owner","permittedCallers":"Addresses allowed to submit jobs","requestId":"The original request ID","serviceId":"The new service ID","ttl":"Service time-to-live"}},"onServiceTermination(uint64,address)":{"params":{"owner":"The service owner","serviceId":"The service ID"}},"onSlash(uint64,bytes,uint8)":{"params":{"offender":"The slashed operator","serviceId":"The service ID","slashPercent":"Percentage slashed"}},"onUnappliedSlash(uint64,bytes,uint8)":{"details":"This is the dispute window - gather evidence, notify parties","params":{"offender":"The operator being slashed (encoded as bytes for flexibility)","serviceId":"The service ID","slashPercent":"Percentage of stake to slash"}},"onUnregister(address)":{"params":{"operator":"The operator's address"}},"onUpdatePreferences(address,bytes)":{"params":{"newPreferences":"Updated preferences data","operator":"The operator's address"}},"queryDeveloperPaymentAddress(uint64)":{"details":"Override to route payments to different addresses per service","params":{"serviceId":"The service ID"},"returns":{"developerPaymentAddress":"Address to receive developer share"}},"queryDisputeOrigin(uint64)":{"details":"Override to designate a custom dispute resolver (e.g. a dispute contract). This account may dispute a pending slash on this service bondless, like SLASH_ADMIN, and escalates it to admin resolution. It cannot dispute a slash it proposed itself. Return address(0) to disable the custom dispute path (operator + SLASH_ADMIN only).","params":{"serviceId":"The service ID"},"returns":{"disputeOrigin":"Address that can dispute (default: this contract)"}},"queryIsPaymentAssetAllowed(uint64,address)":{"params":{"asset":"The payment asset address (address(0) for native)","serviceId":"The service ID"},"returns":{"isAllowed":"True if the asset can be used for payment"}},"querySlashingOrigin(uint64)":{"details":"Override to allow custom slashing authorities (dispute contracts, etc.)","params":{"serviceId":"The service ID"},"returns":{"slashingOrigin":"Address that can slash (default: this contract)"}},"requiresAggregation(uint64,uint8)":{"details":"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"True if BLS aggregation is required for this job"}}},"version":1},"userdoc":{"kind":"user","methods":{"canJoin(uint64,address)":{"notice":"Check if an operator can join a dynamic service"},"canLeave(uint64,address)":{"notice":"Check if an operator can leave a dynamic service"},"computeBillAdjustmentBps(uint64,uint64,uint64)":{"notice":"Scale the nominal subscription bill for a period by an SLA / quality factor."},"forceRemoveAllowsBelowMin(uint64)":{"notice":"Whether `forceRemoveOperator` may drop the service below `minOperators`."},"getAggregationThreshold(uint64,uint8)":{"notice":"Get the aggregation threshold configuration for a job"},"getExitConfig(uint64)":{"notice":"Get the exit configuration for operator departures"},"getHeartbeatInterval(uint64)":{"notice":"Get the heartbeat interval for a service"},"getHeartbeatThreshold(uint64)":{"notice":"Get the heartbeat threshold for a service"},"getMinOperatorStake()":{"notice":"Get the minimum stake required for operators to register for this blueprint"},"getNonPaymentTerminationPolicy(uint64)":{"notice":"Get non-payment termination policy for subscription services"},"getRequiredResultCount(uint64,uint8)":{"notice":"Get the number of results required to complete a job"},"getSlashingWindow(uint64)":{"notice":"Get the dispute window for a service's slashes"},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Called when an aggregated job result is submitted"},"onApprove(address,uint64,uint8)":{"notice":"Called when an operator approves a service request"},"onBinaryVersionPublished(uint64,(uint64,uint64,bool,bytes32,bytes32),string)":{"notice":"Called when a new binary version is published for this blueprint"},"onBlueprintCreated(uint64,address,address)":{"notice":"Called when blueprint is created"},"onExitCanceled(uint64,address)":{"notice":"Called when an operator cancels their scheduled exit"},"onExitScheduled(uint64,address,uint64)":{"notice":"Called when an operator schedules their exit from a service"},"onJobCall(uint64,uint8,uint64,bytes)":{"notice":"Called when a job is submitted"},"onJobResult(uint64,uint8,uint64,address,bytes32,bytes)":{"notice":"Called when an operator submits a job result"},"onOperatorBinaryAcked(uint64,uint64,address)":{"notice":"Called when an operator acknowledges a binary version for a service"},"onOperatorJoined(uint64,address,uint16)":{"notice":"Called after an operator successfully joins a service"},"onOperatorLeft(uint64,address)":{"notice":"Called after an operator successfully leaves a service"},"onRegister(address,bytes)":{"notice":"Called when an operator registers to this blueprint"},"onReject(address,uint64)":{"notice":"Called when an operator rejects a service request"},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"notice":"Called when a service is requested"},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"notice":"Called when service becomes active (all operators approved)"},"onServiceTermination(uint64,address)":{"notice":"Called when service is terminated"},"onSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is finalized and applied"},"onUnappliedSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is queued but not yet applied"},"onUnregister(address)":{"notice":"Called when an operator unregisters from this blueprint"},"onUpdatePreferences(address,bytes)":{"notice":"Called when an operator updates their preferences (RPC address, etc.)"},"queryDeveloperPaymentAddress(uint64)":{"notice":"Get the developer payment address for a service"},"queryDisputeOrigin(uint64)":{"notice":"Query the account authorized to dispute slashes"},"queryIsPaymentAssetAllowed(uint64,address)":{"notice":"Check if a payment asset is allowed for this blueprint"},"querySlashingOrigin(uint64)":{"notice":"Query the account authorized to propose slashes for a service"},"requiresAggregation(uint64,uint8)":{"notice":"Check if a job requires BLS aggregated results"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IBlueprintServiceManager.sol":"IBlueprintServiceManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IBlueprintServiceManager.sol":{"keccak256":"0x8efcdc767df09b461f233eb51059c0be599b9ac119197ae0390e83a34b78a969","urls":["bzz-raw://23c79ce93ed37026696d1cef24501f413f4e05a813aa0b639fcd0ee2eddd3119","dweb:/ipfs/Qmb2SQLTD3fx1A3JMpPa2E3aXe8uGiXFF5kCVjZHVHnEvc"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/bindings/abi/IMultiAssetDelegation.json b/bindings/abi/IMultiAssetDelegation.json index 7535abfc..fd2c2ac5 100644 --- a/bindings/abi/IMultiAssetDelegation.json +++ b/bindings/abi/IMultiAssetDelegation.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"addBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addBlueprintToDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"advanceRound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancelCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositERC20WithLock","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositWithLock","inputs":[{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"disableAsset","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAssetWithAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstakeAndWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeOperatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAssetConfig","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.AssetConfig","components":[{"name":"enabled","type":"bool","internalType":"bool"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getCumStakeSeconds","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"cum","type":"uint256","internalType":"uint256"},{"name":"lastUpdate","type":"uint64","internalType":"uint64"},{"name":"currentStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegationBlueprints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getDelegationMode","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.DelegationMode"}],"stateMutability":"view"},{"type":"function","name":"getDelegations","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondInfoDelegator[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"}]}],"stateMutability":"view"},{"type":"function","name":"getDeposit","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Deposit","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"delegatedAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getLocks","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.LockInfo[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"multiplier","type":"uint8","internalType":"enum Types.LockMultiplier"},{"name":"expiryTimestamp","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlueprints","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatorCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegators","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorMetadata","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorMetadata","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"delegationCount","type":"uint32","internalType":"uint32"},{"name":"status","type":"uint8","internalType":"enum Types.OperatorStatus"},{"name":"leavingRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorRewardPool","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRewardPool","components":[{"name":"totalShares","type":"uint256","internalType":"uint256"},{"name":"totalAssets","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorSelfStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingCommissionChange","inputs":[],"outputs":[{"name":"pendingBps","type":"uint16","internalType":"uint16"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPendingUnstakes","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondLessRequest[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"slashFactorSnapshot","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingWithdrawals","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.WithdrawRequest[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getTotalDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseStake","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"increaseStakeWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorActive","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasher","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"meetsStakeRequirement","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"required","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minOperatorStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAt","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBondToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"operatorCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"previewDelegatorUnstakeShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"registerOperatorWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintFromDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescueTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"scheduleDelegatorUnstake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleOperatorUnstake","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDelays","inputs":[{"name":"delegationBondLessDelay","type":"uint64","internalType":"uint64"},{"name":"leaveDelegatorsDelay","type":"uint64","internalType":"uint64"},{"name":"leaveOperatorsDelay","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationMode","inputs":[{"name":"mode","type":"uint8","internalType":"enum Types.DelegationMode"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationWhitelist","inputs":[{"name":"delegators","type":"address[]","internalType":"address[]"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorBondToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorCommission","inputs":[{"name":"bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequireAdapters","inputs":[{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardsManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTangle","inputs":[{"name":"tangle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForBlueprint","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForService","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterRegistered","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterRemoved","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetDisabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetEnabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"minOperatorStake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minDelegation","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequireAdaptersUpdated","inputs":[{"name":"required","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RoundAdvanced","inputs":[{"name":"round","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AdapterChangeWhileDepositsExist","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","addBlueprintForOperator(address,uint64)":"b9c04c1b","addBlueprintToDelegation(uint256,uint64)":"23cc2700","addSlasher(address)":"68a9f19c","advanceRound()":"1ba9998b","canDelegate(address,address)":"2aa81239","cancelCommissionChange()":"dc71ef30","completeLeaving()":"d1736ba7","currentRound()":"8a19c8bc","delegate(address,uint256)":"026e402b","delegateWithOptions(address,address,uint256,uint8,uint64[])":"fd7d3dbc","delegationBondLessDelay()":"ba05bbf5","deposit()":"d0e30db0","depositAndDelegate(address)":"461cc23b","depositAndDelegateWithOptions(address,address,uint256,uint8,uint64[])":"fbec4861","depositERC20(address,uint256)":"97feb926","depositERC20WithLock(address,uint256,uint8)":"cb15038b","depositWithLock(uint8)":"f38c7c4e","disableAsset(address)":"70807528","enableAsset(address,uint256,uint256,uint256,uint16)":"354ebef9","enableAssetWithAdapter(address,address,uint256,uint256,uint256,uint16)":"f0b52bb4","executeCommissionChange()":"46c9b454","executeDelegatorUnstake()":"007910d0","executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":"bf690206","executeOperatorUnstake()":"b0dfce06","executeWithdraw()":"f8fd9795","getAssetConfig(address)":"6ec3ab67","getCumStakeSeconds(address,(uint8,address))":"c1f1d6fb","getDelegation(address,address)":"15049a5a","getDelegationBlueprints(address,uint256)":"7b9996c5","getDelegationMode(address)":"7bed797d","getDelegations(address)":"31cc13ba","getDeposit(address,address)":"c35082a9","getLocks(address,address)":"0c8833ce","getOperatorBlueprints(address)":"dc972ccc","getOperatorDelegatedStake(address)":"8c5b4ae7","getOperatorDelegatedStakeForAsset(address,(uint8,address))":"20e1b202","getOperatorDelegatorCount(address)":"486398c3","getOperatorDelegators(address)":"a299e298","getOperatorMetadata(address)":"2ee663b8","getOperatorRewardPool(address)":"03587c1d","getOperatorSelfStake(address)":"d673e0b9","getOperatorStake(address)":"e4e88de8","getOperatorStakeForAsset(address,(uint8,address))":"3501b458","getPendingCommissionChange()":"c6b7a813","getPendingUnstakes(address)":"5722d512","getPendingWithdrawals(address)":"f340c0d0","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getTotalDelegation(address)":"fc5e7e09","increaseStake()":"d9e257ef","increaseStakeWithAsset(address,uint256)":"e5e27b6a","isOperator(address)":"6d70f7ae","isOperatorActive(address)":"eb473533","isSlasher(address)":"57601c5d","isWhitelisted(address,address)":"b6b35272","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","meetsStakeRequirement(address,uint256)":"f46913bb","minOperatorStake()":"d775cb61","operatorAt(uint256)":"26142335","operatorBondToken()":"0f157fb9","operatorCommissionBps()":"32273f61","operatorCount()":"7c6f3158","pause()":"8456cb59","previewDelegatorUnstakeShares(address,address,uint256)":"71ed20b6","registerAdapter(address,address)":"d655b92a","registerOperator()":"2acde098","registerOperatorWithAsset(address,uint256)":"e0a5825b","removeAdapter(address)":"585cd34b","removeBlueprintForOperator(address,uint64)":"d106de35","removeBlueprintFromDelegation(uint256,uint64)":"859caa18","removeSlasher(address)":"aac6aa9c","rescueTokens(address,address,uint256)":"cea9d26f","rewardsManager()":"defe2053","roundDuration()":"f7cb789a","scheduleDelegatorUnstake(address,address,uint256)":"fc8a91af","scheduleOperatorUnstake(uint256)":"44aff252","scheduleWithdraw(address,uint256)":"e1ee4bcc","serviceFeeDistributor()":"2e40f7fb","setDelays(uint64,uint64,uint64)":"03780211","setDelegationMode(uint8)":"7202f76a","setDelegationWhitelist(address[],bool)":"c353c1f6","setOperatorBondToken(address)":"84f5ef65","setOperatorCommission(uint16)":"f3c4d8a0","setRequireAdapters(bool)":"7b76fe5e","setRewardsManager(address)":"0a8ddc5e","setServiceFeeDistributor(address)":"fbcc7b3d","setTangle(address)":"bf5274a7","slash(address,uint64,uint16,bytes32)":"ff38b049","slashForBlueprint(address,uint64,uint64,uint16,bytes32)":"614b1d9b","slashForService(address,uint64,uint64,((uint8,address),uint16)[],uint16,bytes32)":"675b3c43","snapshotOperator(address)":"cadd550c","startLeaving()":"87703550","undelegate(address,uint256)":"4d99dd16","unpause()":"3f4ba83a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"}],\"name\":\"AdapterChangeWhileDepositsExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"AdapterRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AdapterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AssetDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"}],\"name\":\"AssetEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"RequireAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"}],\"name\":\"RoundAdvanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintToDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"addSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"advanceRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"canDelegate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"completeLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"delegateWithOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"depositAndDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"depositAndDelegateWithOptions\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositERC20WithLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositWithLock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"disableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAssetWithAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"executeDelegatorUnstakeAndWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getCumStakeSeconds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cum\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdate\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"currentStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getDelegationBlueprints\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegationMode\",\"outputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegations\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.BondInfoDelegator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeposit\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegatedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Deposit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"multiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"expiryTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.LockInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlueprints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorDelegatedStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"delegationCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"leavingRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRewardPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorRewardPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorSelfStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPendingCommissionChange\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"pendingBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingUnstakes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"slashFactorSnapshot\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BondLessRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingWithdrawals\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.WithdrawRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getTotalDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseStakeWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSlasher\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"meetsStakeRequirement\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"operatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBondToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"previewDelegatorUnstakeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"registerAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"registerOperatorWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintFromDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"removeSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"delegationBondLessDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveDelegatorsDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveOperatorsDelay\",\"type\":\"uint64\"}],\"name\":\"setDelays\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setDelegationMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"delegators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setDelegationWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setOperatorBondToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"setRequireAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setRewardsManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tangle\",\"type\":\"address\"}],\"name\":\"setTangle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForBlueprint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForService\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"snapshotOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"INTERFACE STRUCTURE: This interface is intentionally comprehensive to maintain backward compatibility. Logically, it can be viewed as composed of these segments: - Operator Functions: registration, staking, blueprint management - Deposit Functions: native/ERC20 deposits with optional locks - Delegation Functions: delegate/undelegate with blueprint selection - Slashing: slash functions and related queries - Asset Management: enable/disable assets, adapters - View Functions: read-only queries for state - Admin Functions: protocol configuration Future versions may split into focused sub-interfaces (e.g., IOperatorManager, IDepositManager, IDelegationManager) for better composability.\",\"kind\":\"dev\",\"methods\":{\"canDelegate(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if delegation is allowed\"}},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"details\":\"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.\",\"params\":{\"operator\":\"Operator to unstake from\",\"receiver\":\"Recipient of the withdrawn assets\",\"requestedRound\":\"Round in which the unstake was scheduled\",\"shares\":\"Shares to unstake (as stored in the underlying bond-less request)\",\"token\":\"Token address (address(0) for native)\"},\"returns\":{\"amount\":\"Actual amount returned (after exchange-rate adjustments)\"}},\"getDelegationMode(address)\":{\"params\":{\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"The current delegation mode\"}},\"isWhitelisted(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if whitelisted\"}},\"setDelegationMode(uint8)\":{\"params\":{\"mode\":\"Delegation mode: Disabled (0), Whitelist (1), or Open (2)\"}},\"setDelegationWhitelist(address[],bool)\":{\"params\":{\"approved\":\"True to approve, false to revoke\",\"delegators\":\"Array of delegator addresses to update\"}}},\"title\":\"IMultiAssetDelegation\",\"version\":1},\"userdoc\":{\"errors\":{\"AdapterChangeWhileDepositsExist(address,uint256)\":[{\"notice\":\"Raw register/remove of an adapter is rejected while the asset has live deposits; admins must drain through the migration path (`startAdapterMigration` \\u2192 `completeAdapterMigration`) instead.\"}]},\"kind\":\"user\",\"methods\":{\"canDelegate(address,address)\":{\"notice\":\"Check if delegator can delegate to operator\"},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"notice\":\"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`.\"},\"getCumStakeSeconds(address,(uint8,address))\":{\"notice\":\"Lazy-realized cumulative stake-seconds for an (operator, asset) at the current block. Used by `Payments.billSubscription` for TWAP-fair pricing.\"},\"getDelegationMode(address)\":{\"notice\":\"Get operator's delegation mode\"},\"getOperatorRewardPool(address)\":{\"notice\":\"Get the operator's reward pool for the bond asset\"},\"isWhitelisted(address,address)\":{\"notice\":\"Check if delegator is whitelisted\"},\"setDelegationMode(uint8)\":{\"notice\":\"Set delegation mode for the operator\"},\"setDelegationWhitelist(address[],bool)\":{\"notice\":\"Update whitelist for the operator (batch)\"}},\"notice\":\"Full interface for the multi-asset staking contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IMultiAssetDelegation.sol\":\"IMultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMultiAssetDelegation.sol\":{\"keccak256\":\"0x20b3277270e2823f403dd14473e772c40e363b9a82cfaed8f2dd08fdade0c4fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efb6265f16d2a512ce819d61ce84630c161395157ef1a095455b437b4a15e513\",\"dweb:/ipfs/QmWj2wAdScu3mc7BxGUBt1hQyQEpcWyBxS92kX5XuodnL3\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba\",\"dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680\",\"dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369\",\"dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xe93c980b9274072d24fd9de10cfae048d7ccd5a49012e1ce59ae677158a65d75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79db7d81647b5948c28f1b7a6a1b990fe81d56838fb2c2904d226ae34023f2ef\",\"dweb:/ipfs/QmTaMpxc6FK4bf4JwY7BLAhhk4dm5zKcn1GAFnqn4ZMshh\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415\",\"dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb\",\"dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d\",\"dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf\",\"dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"}],"type":"error","name":"AdapterChangeWhileDepositsExist"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"adapter","type":"address","indexed":true}],"type":"event","name":"AdapterRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AdapterRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AssetDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"minOperatorStake","type":"uint256","indexed":false},{"internalType":"uint256","name":"minDelegation","type":"uint256","indexed":false}],"type":"event","name":"AssetEnabled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"bool","name":"required","type":"bool","indexed":false}],"type":"event","name":"RequireAdaptersUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64","indexed":true}],"type":"event","name":"RoundAdvanced","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintToDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addSlasher"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"advanceRound"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"canDelegate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cancelCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"completeLeaving"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"delegateWithOptions"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"payable","type":"function","name":"depositAndDelegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"payable","type":"function","name":"depositAndDelegateWithOptions"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20WithLock"},{"inputs":[{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"payable","type":"function","name":"depositWithLock"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAssetWithAdapter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstake"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstakeAndWithdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeOperatorUnstake"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeWithdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetConfig","outputs":[{"internalType":"struct Types.AssetConfig","name":"","type":"tuple","components":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getCumStakeSeconds","outputs":[{"internalType":"uint256","name":"cum","type":"uint256"},{"internalType":"uint64","name":"lastUpdate","type":"uint64"},{"internalType":"uint256","name":"currentStake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDelegationBlueprints","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegationMode","outputs":[{"internalType":"enum Types.DelegationMode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegations","outputs":[{"internalType":"struct Types.BondInfoDelegator[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposit","outputs":[{"internalType":"struct Types.Deposit","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"delegatedAmount","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getLocks","outputs":[{"internalType":"struct Types.LockInfo[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"multiplier","type":"uint8"},{"internalType":"uint64","name":"expiryTimestamp","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlueprints","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorMetadata","outputs":[{"internalType":"struct Types.OperatorMetadata","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint32","name":"delegationCount","type":"uint32"},{"internalType":"enum Types.OperatorStatus","name":"status","type":"uint8"},{"internalType":"uint64","name":"leavingRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRewardPool","outputs":[{"internalType":"struct Types.OperatorRewardPool","name":"","type":"tuple","components":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorSelfStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPendingCommissionChange","outputs":[{"internalType":"uint16","name":"pendingBps","type":"uint16"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingUnstakes","outputs":[{"internalType":"struct Types.BondLessRequest[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint256","name":"slashFactorSnapshot","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingWithdrawals","outputs":[{"internalType":"struct Types.WithdrawRequest[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalDelegation","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"increaseStake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseStakeWithAsset"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isSlasher","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"required","type":"uint256"}],"stateMutability":"view","type":"function","name":"meetsStakeRequirement","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBondToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDelegatorUnstakeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerAdapter"},{"inputs":[],"stateMutability":"payable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAdapter"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintFromDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeSlasher"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rescueTokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleDelegatorUnstake"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleOperatorUnstake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"delegationBondLessDelay","type":"uint64"},{"internalType":"uint64","name":"leaveDelegatorsDelay","type":"uint64"},{"internalType":"uint64","name":"leaveOperatorsDelay","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDelays"},{"inputs":[{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationMode"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationWhitelist"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorBondToken"},{"inputs":[{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorCommission"},{"inputs":[{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setRequireAdapters"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsManager"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"address","name":"tangle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTangle"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForBlueprint","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForService","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"snapshotOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startLeaving"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"undelegate"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"canDelegate(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if delegation is allowed"}},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"details":"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.","params":{"operator":"Operator to unstake from","receiver":"Recipient of the withdrawn assets","requestedRound":"Round in which the unstake was scheduled","shares":"Shares to unstake (as stored in the underlying bond-less request)","token":"Token address (address(0) for native)"},"returns":{"amount":"Actual amount returned (after exchange-rate adjustments)"}},"getDelegationMode(address)":{"params":{"operator":"Operator address"},"returns":{"_0":"The current delegation mode"}},"isWhitelisted(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if whitelisted"}},"setDelegationMode(uint8)":{"params":{"mode":"Delegation mode: Disabled (0), Whitelist (1), or Open (2)"}},"setDelegationWhitelist(address[],bool)":{"params":{"approved":"True to approve, false to revoke","delegators":"Array of delegator addresses to update"}}},"version":1},"userdoc":{"kind":"user","methods":{"canDelegate(address,address)":{"notice":"Check if delegator can delegate to operator"},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"notice":"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`."},"getCumStakeSeconds(address,(uint8,address))":{"notice":"Lazy-realized cumulative stake-seconds for an (operator, asset) at the current block. Used by `Payments.billSubscription` for TWAP-fair pricing."},"getDelegationMode(address)":{"notice":"Get operator's delegation mode"},"getOperatorRewardPool(address)":{"notice":"Get the operator's reward pool for the bond asset"},"isWhitelisted(address,address)":{"notice":"Check if delegator is whitelisted"},"setDelegationMode(uint8)":{"notice":"Set delegation mode for the operator"},"setDelegationWhitelist(address[],bool)":{"notice":"Update whitelist for the operator (batch)"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IMultiAssetDelegation.sol":"IMultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMultiAssetDelegation.sol":{"keccak256":"0x20b3277270e2823f403dd14473e772c40e363b9a82cfaed8f2dd08fdade0c4fb","urls":["bzz-raw://efb6265f16d2a512ce819d61ce84630c161395157ef1a095455b437b4a15e513","dweb:/ipfs/QmWj2wAdScu3mc7BxGUBt1hQyQEpcWyBxS92kX5XuodnL3"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6","urls":["bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba","dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8","urls":["bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680","dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5","urls":["bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369","dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xe93c980b9274072d24fd9de10cfae048d7ccd5a49012e1ce59ae677158a65d75","urls":["bzz-raw://79db7d81647b5948c28f1b7a6a1b990fe81d56838fb2c2904d226ae34023f2ef","dweb:/ipfs/QmTaMpxc6FK4bf4JwY7BLAhhk4dm5zKcn1GAFnqn4ZMshh"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153","urls":["bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415","dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0","urls":["bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb","dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c","urls":["bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d","dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a","urls":["bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf","dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file +{"abi":[{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"addBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addBlueprintToDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"advanceRound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancelCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositERC20WithLock","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositWithLock","inputs":[{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"disableAsset","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAssetWithAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstakeAndWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeOperatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAssetConfig","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.AssetConfig","components":[{"name":"enabled","type":"bool","internalType":"bool"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getCumStakeSeconds","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"cum","type":"uint256","internalType":"uint256"},{"name":"lastUpdate","type":"uint64","internalType":"uint64"},{"name":"currentStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegationBlueprints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getDelegationMode","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.DelegationMode"}],"stateMutability":"view"},{"type":"function","name":"getDelegations","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondInfoDelegator[]","components":[{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}]}],"stateMutability":"view"},{"type":"function","name":"getDeposit","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Deposit","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"delegatedAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getLocks","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.LockInfo[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"multiplier","type":"uint8","internalType":"enum Types.LockMultiplier"},{"name":"expiryTimestamp","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlueprints","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatorCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegators","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorMetadata","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorMetadata","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"delegationCount","type":"uint32","internalType":"uint32"},{"name":"status","type":"uint8","internalType":"enum Types.OperatorStatus"},{"name":"leavingRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorRewardPool","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRewardPool","components":[{"name":"totalShares","type":"uint256","internalType":"uint256"},{"name":"totalAssets","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorSelfStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingCommissionChange","inputs":[],"outputs":[{"name":"pendingBps","type":"uint16","internalType":"uint16"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPendingUnstakes","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondLessRequest[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"slashFactorSnapshot","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingWithdrawals","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.WithdrawRequest[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getTotalDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseStake","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"increaseStakeWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorActive","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasher","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"meetsStakeRequirement","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"required","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minOperatorStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAt","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBondToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"operatorCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"previewDelegatorUnstakeShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"registerOperatorWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintFromDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescueTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"scheduleDelegatorUnstake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleOperatorUnstake","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDelays","inputs":[{"name":"delegationBondLessDelay","type":"uint64","internalType":"uint64"},{"name":"leaveDelegatorsDelay","type":"uint64","internalType":"uint64"},{"name":"leaveOperatorsDelay","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationMode","inputs":[{"name":"mode","type":"uint8","internalType":"enum Types.DelegationMode"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationWhitelist","inputs":[{"name":"delegators","type":"address[]","internalType":"address[]"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorBondToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorCommission","inputs":[{"name":"bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequireAdapters","inputs":[{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardsManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTangle","inputs":[{"name":"tangle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForBlueprint","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForService","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterRegistered","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterRemoved","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetDisabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetEnabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"minOperatorStake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minDelegation","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequireAdaptersUpdated","inputs":[{"name":"required","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RoundAdvanced","inputs":[{"name":"round","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AdapterChangeWhileDepositsExist","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","addBlueprintForOperator(address,uint64)":"b9c04c1b","addBlueprintToDelegation(uint256,uint64)":"23cc2700","addSlasher(address)":"68a9f19c","advanceRound()":"1ba9998b","canDelegate(address,address)":"2aa81239","cancelCommissionChange()":"dc71ef30","completeLeaving()":"d1736ba7","currentRound()":"8a19c8bc","delegate(address,uint256)":"026e402b","delegateWithOptions(address,address,uint256,uint8,uint64[])":"fd7d3dbc","delegationBondLessDelay()":"ba05bbf5","deposit()":"d0e30db0","depositAndDelegate(address)":"461cc23b","depositAndDelegateWithOptions(address,address,uint256,uint8,uint64[])":"fbec4861","depositERC20(address,uint256)":"97feb926","depositERC20WithLock(address,uint256,uint8)":"cb15038b","depositWithLock(uint8)":"f38c7c4e","disableAsset(address)":"70807528","enableAsset(address,uint256,uint256,uint256,uint16)":"354ebef9","enableAssetWithAdapter(address,address,uint256,uint256,uint256,uint16)":"f0b52bb4","executeCommissionChange()":"46c9b454","executeDelegatorUnstake()":"007910d0","executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":"bf690206","executeOperatorUnstake()":"b0dfce06","executeWithdraw()":"f8fd9795","getAssetConfig(address)":"6ec3ab67","getCumStakeSeconds(address,(uint8,address))":"c1f1d6fb","getDelegation(address,address)":"15049a5a","getDelegationBlueprints(address,uint256)":"7b9996c5","getDelegationMode(address)":"7bed797d","getDelegations(address)":"31cc13ba","getDeposit(address,address)":"c35082a9","getLocks(address,address)":"0c8833ce","getOperatorBlueprints(address)":"dc972ccc","getOperatorDelegatedStake(address)":"8c5b4ae7","getOperatorDelegatedStakeForAsset(address,(uint8,address))":"20e1b202","getOperatorDelegatorCount(address)":"486398c3","getOperatorDelegators(address)":"a299e298","getOperatorMetadata(address)":"2ee663b8","getOperatorRewardPool(address)":"03587c1d","getOperatorSelfStake(address)":"d673e0b9","getOperatorStake(address)":"e4e88de8","getOperatorStakeForAsset(address,(uint8,address))":"3501b458","getPendingCommissionChange()":"c6b7a813","getPendingUnstakes(address)":"5722d512","getPendingWithdrawals(address)":"f340c0d0","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getTotalDelegation(address)":"fc5e7e09","increaseStake()":"d9e257ef","increaseStakeWithAsset(address,uint256)":"e5e27b6a","isOperator(address)":"6d70f7ae","isOperatorActive(address)":"eb473533","isSlasher(address)":"57601c5d","isWhitelisted(address,address)":"b6b35272","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","meetsStakeRequirement(address,uint256)":"f46913bb","minOperatorStake()":"d775cb61","operatorAt(uint256)":"26142335","operatorBondToken()":"0f157fb9","operatorCommissionBps()":"32273f61","operatorCount()":"7c6f3158","pause()":"8456cb59","previewDelegatorUnstakeShares(address,address,uint256)":"71ed20b6","registerAdapter(address,address)":"d655b92a","registerOperator()":"2acde098","registerOperatorWithAsset(address,uint256)":"e0a5825b","removeAdapter(address)":"585cd34b","removeBlueprintForOperator(address,uint64)":"d106de35","removeBlueprintFromDelegation(uint256,uint64)":"859caa18","removeSlasher(address)":"aac6aa9c","rescueTokens(address,address,uint256)":"cea9d26f","rewardsManager()":"defe2053","roundDuration()":"f7cb789a","scheduleDelegatorUnstake(address,address,uint256)":"fc8a91af","scheduleOperatorUnstake(uint256)":"44aff252","scheduleWithdraw(address,uint256)":"e1ee4bcc","serviceFeeDistributor()":"2e40f7fb","setDelays(uint64,uint64,uint64)":"03780211","setDelegationMode(uint8)":"7202f76a","setDelegationWhitelist(address[],bool)":"c353c1f6","setOperatorBondToken(address)":"84f5ef65","setOperatorCommission(uint16)":"f3c4d8a0","setRequireAdapters(bool)":"7b76fe5e","setRewardsManager(address)":"0a8ddc5e","setServiceFeeDistributor(address)":"fbcc7b3d","setTangle(address)":"bf5274a7","slash(address,uint64,uint16,bytes32)":"ff38b049","slashForBlueprint(address,uint64,uint64,uint16,bytes32)":"614b1d9b","slashForService(address,uint64,uint64,((uint8,address),uint16)[],uint16,bytes32)":"675b3c43","snapshotOperator(address)":"cadd550c","startLeaving()":"87703550","undelegate(address,uint256)":"4d99dd16","unpause()":"3f4ba83a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"}],\"name\":\"AdapterChangeWhileDepositsExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"AdapterRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AdapterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AssetDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"}],\"name\":\"AssetEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"RequireAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"}],\"name\":\"RoundAdvanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintToDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"addSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"advanceRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"canDelegate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"completeLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"delegateWithOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"depositAndDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"depositAndDelegateWithOptions\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositERC20WithLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositWithLock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"disableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAssetWithAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"executeDelegatorUnstakeAndWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AssetConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getCumStakeSeconds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cum\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdate\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"currentStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getDelegationBlueprints\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegationMode\",\"outputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegations\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"internalType\":\"struct Types.BondInfoDelegator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeposit\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegatedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Deposit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"multiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"expiryTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.LockInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlueprints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorDelegatedStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"delegationCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"leavingRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRewardPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorRewardPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorSelfStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPendingCommissionChange\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"pendingBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingUnstakes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slashFactorSnapshot\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BondLessRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingWithdrawals\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.WithdrawRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getTotalDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseStakeWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSlasher\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"meetsStakeRequirement\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"operatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBondToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"previewDelegatorUnstakeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"registerAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"registerOperatorWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintFromDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"removeSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"delegationBondLessDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveDelegatorsDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveOperatorsDelay\",\"type\":\"uint64\"}],\"name\":\"setDelays\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setDelegationMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"delegators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setDelegationWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setOperatorBondToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"setRequireAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setRewardsManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tangle\",\"type\":\"address\"}],\"name\":\"setTangle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForBlueprint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForService\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"snapshotOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"INTERFACE STRUCTURE: This interface is intentionally comprehensive to maintain backward compatibility. Logically, it can be viewed as composed of these segments: - Operator Functions: registration, staking, blueprint management - Deposit Functions: native/ERC20 deposits with optional locks - Delegation Functions: delegate/undelegate with blueprint selection - Slashing: slash functions and related queries - Asset Management: enable/disable assets, adapters - View Functions: read-only queries for state - Admin Functions: protocol configuration Future versions may split into focused sub-interfaces (e.g., IOperatorManager, IDepositManager, IDelegationManager) for better composability.\",\"kind\":\"dev\",\"methods\":{\"canDelegate(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if delegation is allowed\"}},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"details\":\"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.\",\"params\":{\"operator\":\"Operator to unstake from\",\"receiver\":\"Recipient of the withdrawn assets\",\"requestedRound\":\"Round in which the unstake was scheduled\",\"shares\":\"Shares to unstake (as stored in the underlying bond-less request)\",\"token\":\"Token address (address(0) for native)\"},\"returns\":{\"amount\":\"Actual amount returned (after exchange-rate adjustments)\"}},\"getDelegationMode(address)\":{\"params\":{\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"The current delegation mode\"}},\"isWhitelisted(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if whitelisted\"}},\"setDelegationMode(uint8)\":{\"params\":{\"mode\":\"Delegation mode: Disabled (0), Whitelist (1), or Open (2)\"}},\"setDelegationWhitelist(address[],bool)\":{\"params\":{\"approved\":\"True to approve, false to revoke\",\"delegators\":\"Array of delegator addresses to update\"}}},\"title\":\"IMultiAssetDelegation\",\"version\":1},\"userdoc\":{\"errors\":{\"AdapterChangeWhileDepositsExist(address,uint256)\":[{\"notice\":\"Raw register/remove of an adapter is rejected while the asset has live deposits; admins must drain through the migration path (`startAdapterMigration` \\u2192 `completeAdapterMigration`) instead.\"}]},\"kind\":\"user\",\"methods\":{\"canDelegate(address,address)\":{\"notice\":\"Check if delegator can delegate to operator\"},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"notice\":\"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`.\"},\"getCumStakeSeconds(address,(uint8,address))\":{\"notice\":\"Lazy-realized cumulative stake-seconds for an (operator, asset) at the current block. Used by `Payments.billSubscription` for TWAP-fair pricing.\"},\"getDelegationMode(address)\":{\"notice\":\"Get operator's delegation mode\"},\"getOperatorRewardPool(address)\":{\"notice\":\"Get the operator's reward pool for the bond asset\"},\"isWhitelisted(address,address)\":{\"notice\":\"Check if delegator is whitelisted\"},\"setDelegationMode(uint8)\":{\"notice\":\"Set delegation mode for the operator\"},\"setDelegationWhitelist(address[],bool)\":{\"notice\":\"Update whitelist for the operator (batch)\"}},\"notice\":\"Full interface for the multi-asset staking contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IMultiAssetDelegation.sol\":\"IMultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMultiAssetDelegation.sol\":{\"keccak256\":\"0x20b3277270e2823f403dd14473e772c40e363b9a82cfaed8f2dd08fdade0c4fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efb6265f16d2a512ce819d61ce84630c161395157ef1a095455b437b4a15e513\",\"dweb:/ipfs/QmWj2wAdScu3mc7BxGUBt1hQyQEpcWyBxS92kX5XuodnL3\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba\",\"dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369\",\"dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0x2d865c489500c358ab24c7cbc347d33fb1406a6c7e9d083d0369d9fa1df34eff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f141ef39c41b4ff151bc58aacc92c5c6ad7970b995756654f723c1f80c0b20\",\"dweb:/ipfs/QmXhmXeX7TwMTVtpoubCdBfnhkzyFrr6wWiTPyhbiEt43U\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415\",\"dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb\",\"dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d\",\"dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf\",\"dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"}],"type":"error","name":"AdapterChangeWhileDepositsExist"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"adapter","type":"address","indexed":true}],"type":"event","name":"AdapterRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AdapterRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AssetDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"minOperatorStake","type":"uint256","indexed":false},{"internalType":"uint256","name":"minDelegation","type":"uint256","indexed":false}],"type":"event","name":"AssetEnabled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"bool","name":"required","type":"bool","indexed":false}],"type":"event","name":"RequireAdaptersUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64","indexed":true}],"type":"event","name":"RoundAdvanced","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintToDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addSlasher"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"advanceRound"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"canDelegate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cancelCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"completeLeaving"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"delegateWithOptions"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"payable","type":"function","name":"depositAndDelegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"payable","type":"function","name":"depositAndDelegateWithOptions"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20WithLock"},{"inputs":[{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"payable","type":"function","name":"depositWithLock"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAssetWithAdapter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstake"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstakeAndWithdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeOperatorUnstake"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeWithdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetConfig","outputs":[{"internalType":"struct Types.AssetConfig","name":"","type":"tuple","components":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getCumStakeSeconds","outputs":[{"internalType":"uint256","name":"cum","type":"uint256"},{"internalType":"uint64","name":"lastUpdate","type":"uint64"},{"internalType":"uint256","name":"currentStake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDelegationBlueprints","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegationMode","outputs":[{"internalType":"enum Types.DelegationMode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegations","outputs":[{"internalType":"struct Types.BondInfoDelegator[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposit","outputs":[{"internalType":"struct Types.Deposit","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"delegatedAmount","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getLocks","outputs":[{"internalType":"struct Types.LockInfo[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"multiplier","type":"uint8"},{"internalType":"uint64","name":"expiryTimestamp","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlueprints","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorMetadata","outputs":[{"internalType":"struct Types.OperatorMetadata","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint32","name":"delegationCount","type":"uint32"},{"internalType":"enum Types.OperatorStatus","name":"status","type":"uint8"},{"internalType":"uint64","name":"leavingRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRewardPool","outputs":[{"internalType":"struct Types.OperatorRewardPool","name":"","type":"tuple","components":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorSelfStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPendingCommissionChange","outputs":[{"internalType":"uint16","name":"pendingBps","type":"uint16"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingUnstakes","outputs":[{"internalType":"struct Types.BondLessRequest[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"slashFactorSnapshot","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingWithdrawals","outputs":[{"internalType":"struct Types.WithdrawRequest[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalDelegation","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"increaseStake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseStakeWithAsset"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isSlasher","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"required","type":"uint256"}],"stateMutability":"view","type":"function","name":"meetsStakeRequirement","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBondToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDelegatorUnstakeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerAdapter"},{"inputs":[],"stateMutability":"payable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAdapter"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintFromDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeSlasher"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rescueTokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleDelegatorUnstake"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleOperatorUnstake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"delegationBondLessDelay","type":"uint64"},{"internalType":"uint64","name":"leaveDelegatorsDelay","type":"uint64"},{"internalType":"uint64","name":"leaveOperatorsDelay","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDelays"},{"inputs":[{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationMode"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationWhitelist"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorBondToken"},{"inputs":[{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorCommission"},{"inputs":[{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setRequireAdapters"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsManager"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"address","name":"tangle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTangle"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForBlueprint","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForService","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"snapshotOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startLeaving"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"undelegate"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"canDelegate(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if delegation is allowed"}},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"details":"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.","params":{"operator":"Operator to unstake from","receiver":"Recipient of the withdrawn assets","requestedRound":"Round in which the unstake was scheduled","shares":"Shares to unstake (as stored in the underlying bond-less request)","token":"Token address (address(0) for native)"},"returns":{"amount":"Actual amount returned (after exchange-rate adjustments)"}},"getDelegationMode(address)":{"params":{"operator":"Operator address"},"returns":{"_0":"The current delegation mode"}},"isWhitelisted(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if whitelisted"}},"setDelegationMode(uint8)":{"params":{"mode":"Delegation mode: Disabled (0), Whitelist (1), or Open (2)"}},"setDelegationWhitelist(address[],bool)":{"params":{"approved":"True to approve, false to revoke","delegators":"Array of delegator addresses to update"}}},"version":1},"userdoc":{"kind":"user","methods":{"canDelegate(address,address)":{"notice":"Check if delegator can delegate to operator"},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"notice":"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`."},"getCumStakeSeconds(address,(uint8,address))":{"notice":"Lazy-realized cumulative stake-seconds for an (operator, asset) at the current block. Used by `Payments.billSubscription` for TWAP-fair pricing."},"getDelegationMode(address)":{"notice":"Get operator's delegation mode"},"getOperatorRewardPool(address)":{"notice":"Get the operator's reward pool for the bond asset"},"isWhitelisted(address,address)":{"notice":"Check if delegator is whitelisted"},"setDelegationMode(uint8)":{"notice":"Set delegation mode for the operator"},"setDelegationWhitelist(address[],bool)":{"notice":"Update whitelist for the operator (batch)"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IMultiAssetDelegation.sol":"IMultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMultiAssetDelegation.sol":{"keccak256":"0x20b3277270e2823f403dd14473e772c40e363b9a82cfaed8f2dd08fdade0c4fb","urls":["bzz-raw://efb6265f16d2a512ce819d61ce84630c161395157ef1a095455b437b4a15e513","dweb:/ipfs/QmWj2wAdScu3mc7BxGUBt1hQyQEpcWyBxS92kX5XuodnL3"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6","urls":["bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba","dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5","urls":["bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369","dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0x2d865c489500c358ab24c7cbc347d33fb1406a6c7e9d083d0369d9fa1df34eff","urls":["bzz-raw://c2f141ef39c41b4ff151bc58aacc92c5c6ad7970b995756654f723c1f80c0b20","dweb:/ipfs/QmXhmXeX7TwMTVtpoubCdBfnhkzyFrr6wWiTPyhbiEt43U"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153","urls":["bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415","dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0","urls":["bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb","dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c","urls":["bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d","dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a","urls":["bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf","dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file diff --git a/bindings/abi/ITangle.json b/bindings/abi/ITangle.json index 4cf93ae9..3363c4df 100644 --- a/bindings/abi/ITangle.json +++ b/bindings/abi/ITangle.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"},{"name":"payment","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServicePaymentAsset","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServicePaymentAsset(uint64)":"fc99b3d3","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","operatorAckedCurrentSources(uint64,address)":"2dd20a75","pendingBlueprintOwner(uint64)":"204004d5","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServicePaymentAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getJobEventRate(uint64,uint8)\":{\"details\":\"The returned rate is in the settlement asset's smallest unit \\u2014 see `setJobEventRates` and `getServicePaymentAsset`.\"},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServicePaymentAsset(uint64)\":{\"details\":\"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit.\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"details\":\"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServicePaymentAsset(uint64)\":{\"notice\":\"Get a service's per-job (EventDriven) settlement asset.\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474\",\"dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4\",\"dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"},{"internalType":"uint256","name":"payment","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServicePaymentAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getJobEventRate(uint64,uint8)":{"details":"The returned rate is in the settlement asset's smallest unit — see `setJobEventRates` and `getServicePaymentAsset`."},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServicePaymentAsset(uint64)":{"details":"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit."},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setJobEventRates(uint64,uint8[],uint256[])":{"details":"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServicePaymentAsset(uint64)":{"notice":"Get a service's per-job (EventDriven) settlement asset."},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d","urls":["bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474","dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352","urls":["bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4","dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file +{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintSettlementAsset","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"},{"name":"payment","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServicePaymentAsset","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSettlementAsset","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSettlementAssetSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"asset","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getBlueprintSettlementAsset(uint64)":"ee09b0d8","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServicePaymentAsset(uint64)":"fc99b3d3","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","operatorAckedCurrentSources(uint64,address)":"2dd20a75","pendingBlueprintOwner(uint64)":"204004d5","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSettlementAsset(uint64,address)":"730b595f","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BlueprintSettlementAssetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintSettlementAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServicePaymentAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"setBlueprintSettlementAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getBlueprintSettlementAsset(uint64)\":{\"details\":\"`address(0)` = native (also the default). The per-job rate (`getJobEventRate`) is in this asset's smallest unit.\"},\"getJobEventRate(uint64,uint8)\":{\"details\":\"The returned rate is in the settlement asset's smallest unit \\u2014 see `setJobEventRates` and `getServicePaymentAsset`.\"},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServicePaymentAsset(uint64)\":{\"details\":\"`address(0)` = native, otherwise the ERC20 the blueprint DEVELOPER declared (`setBlueprintSettlementAsset`) and the service pinned at activation. The customer does not choose this asset. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit.\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setBlueprintSettlementAsset(uint64,address)\":{\"details\":\"The SAME party that sets the per-job rate (`setJobEventRates`) declares the settlement asset here, so the rate's units match the asset's decimals. Each service pins this at activation (`getServicePaymentAsset`); the customer cannot choose the asset (an EventDriven request must pass native `address(0)`). `address(0)` = native. A NON-native asset is validated against the manager allow-list (fail-closed). Changing the asset does not re-price already-live services.\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"details\":\"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"BlueprintSettlementAssetSet(uint64,address)\":{\"notice\":\"Emitted when a blueprint owner sets the blueprint's EventDriven settlement asset.\"},\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getBlueprintSettlementAsset(uint64)\":{\"notice\":\"Get the settlement asset the blueprint's EventDriven services bill in.\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServicePaymentAsset(uint64)\":{\"notice\":\"Get a service's per-job (EventDriven) settlement asset.\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSettlementAsset(uint64,address)\":{\"notice\":\"Set the settlement asset every EventDriven service of this blueprint bills in (blueprint owner only).\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xeadb3019d2cf874a55f76ec5909594a30e8699f3f619f35ef3d0f4b598b62ab4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34d6d2f4e2952eb941297aaeeee80d9d201d209019490c187aa9782f5e2ee68b\",\"dweb:/ipfs/QmY1UX6V2y7AMVV8AzggPbSTX19Z5Nr5mayfjjJTZs8FFU\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0x980e7d365c0f92fbd9f3cbf3c1f66bbf3eacc40f13141c74c27048d8902a15ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30d48fd1bcb9cc373a2b716031009d3a17efc9ffca3bc0122f53582d01bb9e17\",\"dweb:/ipfs/QmdFMKa3DALm3k4Sab3TudxmvKL4fYJgaZbVVWP6K8r24e\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"asset","type":"address","indexed":true}],"type":"event","name":"BlueprintSettlementAssetSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintSettlementAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"},{"internalType":"uint256","name":"payment","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServicePaymentAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSettlementAsset"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getBlueprintSettlementAsset(uint64)":{"details":"`address(0)` = native (also the default). The per-job rate (`getJobEventRate`) is in this asset's smallest unit."},"getJobEventRate(uint64,uint8)":{"details":"The returned rate is in the settlement asset's smallest unit — see `setJobEventRates` and `getServicePaymentAsset`."},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServicePaymentAsset(uint64)":{"details":"`address(0)` = native, otherwise the ERC20 the blueprint DEVELOPER declared (`setBlueprintSettlementAsset`) and the service pinned at activation. The customer does not choose this asset. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit."},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setBlueprintSettlementAsset(uint64,address)":{"details":"The SAME party that sets the per-job rate (`setJobEventRates`) declares the settlement asset here, so the rate's units match the asset's decimals. Each service pins this at activation (`getServicePaymentAsset`); the customer cannot choose the asset (an EventDriven request must pass native `address(0)`). `address(0)` = native. A NON-native asset is validated against the manager allow-list (fail-closed). Changing the asset does not re-price already-live services."},"setJobEventRates(uint64,uint8[],uint256[])":{"details":"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getBlueprintSettlementAsset(uint64)":{"notice":"Get the settlement asset the blueprint's EventDriven services bill in."},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServicePaymentAsset(uint64)":{"notice":"Get a service's per-job (EventDriven) settlement asset."},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSettlementAsset(uint64,address)":{"notice":"Set the settlement asset every EventDriven service of this blueprint bills in (blueprint owner only)."},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xeadb3019d2cf874a55f76ec5909594a30e8699f3f619f35ef3d0f4b598b62ab4","urls":["bzz-raw://34d6d2f4e2952eb941297aaeeee80d9d201d209019490c187aa9782f5e2ee68b","dweb:/ipfs/QmY1UX6V2y7AMVV8AzggPbSTX19Z5Nr5mayfjjJTZs8FFU"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0x980e7d365c0f92fbd9f3cbf3c1f66bbf3eacc40f13141c74c27048d8902a15ab","urls":["bzz-raw://30d48fd1bcb9cc373a2b716031009d3a17efc9ffca3bc0122f53582d01bb9e17","dweb:/ipfs/QmdFMKa3DALm3k4Sab3TudxmvKL4fYJgaZbVVWP6K8r24e"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/bindings/abi/ITangleFull.json b/bindings/abi/ITangleFull.json index bd8a9de1..55d9ef60 100644 --- a/bindings/abi/ITangleFull.json +++ b/bindings/abi/ITangleFull.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"},{"name":"payment","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServicePaymentAsset","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"managerHookGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManagerHookGasLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServicePaymentAsset(uint64)":"fc99b3d3","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","managerHookGasLimit()":"35ba86c3","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorAckedCurrentSources(uint64,address)":"2dd20a75","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingBlueprintOwner(uint64)":"204004d5","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setManagerHookGasLimit(uint256)":"e45b84d9","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":"45d8a0b3","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServicePaymentAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"managerHookGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setManagerHookGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getJobEventRate(uint64,uint8)\":{\"details\":\"The returned rate is in the settlement asset's smallest unit \\u2014 see `setJobEventRates` and `getServicePaymentAsset`.\"},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServicePaymentAsset(uint64)\":{\"details\":\"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit.\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"details\":\"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServicePaymentAsset(uint64)\":{\"notice\":\"Get a service's per-job (EventDriven) settlement asset.\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"managerHookGasLimit()\":{\"notice\":\"The effective blueprint-manager hook gas budget\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setManagerHookGasLimit(uint256)\":{\"notice\":\"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474\",\"dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4\",\"dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"},{"internalType":"uint256","name":"payment","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServicePaymentAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"managerHookGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setManagerHookGasLimit"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"claimDisputeBond()":{"details":"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getJobEventRate(uint64,uint8)":{"details":"The returned rate is in the settlement asset's smallest unit — see `setJobEventRates` and `getServicePaymentAsset`."},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServicePaymentAsset(uint64)":{"details":"`address(0)` = native, otherwise the ERC20 pinned at activation from the request's `paymentToken`. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit."},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setJobEventRates(uint64,uint8[],uint256[])":{"details":"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals."},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServicePaymentAsset(uint64)":{"notice":"Get a service's per-job (EventDriven) settlement asset."},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"managerHookGasLimit()":{"notice":"The effective blueprint-manager hook gas budget"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setManagerHookGasLimit(uint256)":{"notice":"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xce85d0814fbe70e1ba71974754dd62e7b29c58f4dc4e3cfcebd489ff8a556f2d","urls":["bzz-raw://df6cf458218e50f6017cdf46bda835dca3bd5996d8418577fdd43e4875519474","dweb:/ipfs/QmNiN1YAw1Q7Dv3fCKoN8uRT2wtkwU7v76N97B9L5LwB4a"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xb9f62d79f16334549ba60e3abcda4baad6d97f54477ded693a2a90b922590352","urls":["bzz-raw://abd458bf8aaa3b1445f32f4c5ba36029cd707493b0e5e6f8df9af958bfd796a4","dweb:/ipfs/QmTgVeD7gQLR7JkB9tg3kWppLzijn25rHH7oQS1crQYLbY"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file +{"abi":[{"type":"function","name":"acceptBlueprintOwnership","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ackBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sourcesHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintDefinitionHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSourcesHash","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"cancelBlueprintTransfer","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"operation","type":"uint8","internalType":"enum Types.QuoteOperation"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintSettlementAsset","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"},{"name":"payment","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reserved0","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServicePaymentAsset","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"managerHookGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorAckedCurrentSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingBlueprintOwner","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSettlementAsset","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManagerHookGasLimit","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"},{"name":"keeperBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"},{"name":"inputsHash","type":"bytes32","internalType":"bytes32"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrowTo","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"to","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintSettlementAssetSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"asset","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintSourcesAcked","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"sourcesHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintTransferCancelled","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferProposed","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptBlueprintOwnership(uint64)":"c7b7561c","ackBlueprintSources(uint64,bytes32)":"38a702d5","addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintDefinitionHash(uint64)":"35257ef4","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSourcesHash(uint64)":"8f78b256","blueprintSupportedMemberships(uint64)":"df57f527","cancelBlueprintTransfer(uint64)":"1b3e9f86","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"8ccea21e","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"5d91ea20","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getBlueprintSettlementAsset(uint64)":"ee09b0d8","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServicePaymentAsset(uint64)":"fc99b3d3","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","managerHookGasLimit()":"35ba86c3","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorAckedCurrentSources(uint64,address)":"2dd20a75","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingBlueprintOwner(uint64)":"204004d5","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setBlueprintSettlementAsset(uint64,address)":"730b595f","setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":"1d683faa","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setManagerHookGasLimit(uint256)":"e45b84d9","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":"45d8a0b3","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":"72a1f7be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100","withdrawRemainingEscrowTo(uint64,address)":"25d80f7d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BlueprintSettlementAssetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintSourcesAcked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"BlueprintTransferProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"acceptBlueprintOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"sourcesHash\",\"type\":\"bytes32\"}],\"name\":\"ackBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintDefinitionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSourcesHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"cancelBlueprintTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.QuoteOperation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintSettlementAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reserved0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServicePaymentAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"managerHookGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorAckedCurrentSources\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"pendingBlueprintOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"setBlueprintSettlementAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintSources\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"setManagerHookGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"keeperBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"inputsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawRemainingEscrowTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"BlueprintTransferCancelled(uint64,address)\":{\"details\":\"Emitted when a pending two-step ownership transfer is cancelled by the current owner.\"},\"BlueprintTransferProposed(uint64,address,address)\":{\"details\":\"Emitted when a two-step ownership transfer is proposed (pendingOwner = the proposed owner).\"},\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"blueprintDefinitionHash(uint64)\":{\"details\":\"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes).\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getBlueprintSettlementAsset(uint64)\":{\"details\":\"`address(0)` = native (also the default). The per-job rate (`getJobEventRate`) is in this asset's smallest unit.\"},\"getJobEventRate(uint64,uint8)\":{\"details\":\"The returned rate is in the settlement asset's smallest unit \\u2014 see `setJobEventRates` and `getServicePaymentAsset`.\"},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServicePaymentAsset(uint64)\":{\"details\":\"`address(0)` = native, otherwise the ERC20 the blueprint DEVELOPER declared (`setBlueprintSettlementAsset`) and the service pinned at activation. The customer does not choose this asset. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit.\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setBlueprintSettlementAsset(uint64,address)\":{\"details\":\"The SAME party that sets the per-job rate (`setJobEventRates`) declares the settlement asset here, so the rate's units match the asset's decimals. Each service pins this at activation (`getServicePaymentAsset`); the customer cannot choose the asset (an EventDriven request must pass native `address(0)`). `address(0)` = native. A NON-native asset is validated against the manager allow-list (fail-closed). Changing the asset does not re-price already-live services.\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"details\":\"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}},\"withdrawRemainingEscrowTo(uint64,address)\":{\"details\":\"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero.\"}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"BlueprintSettlementAssetSet(uint64,address)\":{\"notice\":\"Emitted when a blueprint owner sets the blueprint's EventDriven settlement asset.\"},\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"acceptBlueprintOwnership(uint64)\":{\"notice\":\"Accept a pending blueprint ownership transfer (step 2 of 2)\"},\"ackBlueprintSources(uint64,bytes32)\":{\"notice\":\"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)\"},\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintDefinitionHash(uint64)\":{\"notice\":\"keccak256 of the ABI-encoded definition captured at creation.\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSourcesHash(uint64)\":{\"notice\":\"The current cold-start sources digest for a blueprint\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"cancelBlueprintTransfer(uint64)\":{\"notice\":\"Cancel a pending blueprint ownership transfer\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getBlueprintSettlementAsset(uint64)\":{\"notice\":\"Get the settlement asset the blueprint's EventDriven services bill in.\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServicePaymentAsset(uint64)\":{\"notice\":\"Get a service's per-job (EventDriven) settlement asset.\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"managerHookGasLimit()\":{\"notice\":\"The effective blueprint-manager hook gas budget\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorAckedCurrentSources(uint64,address)\":{\"notice\":\"Whether `operator` has acked the blueprint's current cold-start sources\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingBlueprintOwner(uint64)\":{\"notice\":\"The pending owner of a blueprint (zero if none)\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setBlueprintSettlementAsset(uint64,address)\":{\"notice\":\"Set the settlement asset every EventDriven service of this blueprint bills in (blueprint owner only).\"},\"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])\":{\"notice\":\"Replace a blueprint's binary sources (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setManagerHookGasLimit(uint256)\":{\"notice\":\"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Propose a transfer of blueprint ownership (step 1 of 2)\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination to the service owner.\"},\"withdrawRemainingEscrowTo(uint64,address)\":{\"notice\":\"Withdraw remaining escrow after termination to a service-owner-chosen address.\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227\",\"dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xeadb3019d2cf874a55f76ec5909594a30e8699f3f619f35ef3d0f4b598b62ab4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34d6d2f4e2952eb941297aaeeee80d9d201d209019490c187aa9782f5e2ee68b\",\"dweb:/ipfs/QmY1UX6V2y7AMVV8AzggPbSTX19Z5Nr5mayfjjJTZs8FFU\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f\",\"dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20\",\"dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0x980e7d365c0f92fbd9f3cbf3c1f66bbf3eacc40f13141c74c27048d8902a15ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30d48fd1bcb9cc373a2b716031009d3a17efc9ffca3bc0122f53582d01bb9e17\",\"dweb:/ipfs/QmdFMKa3DALm3k4Sab3TudxmvKL4fYJgaZbVVWP6K8r24e\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f\",\"dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516\",\"dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779\",\"dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3\",\"dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"asset","type":"address","indexed":true}],"type":"event","name":"BlueprintSettlementAssetSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintSourcesAcked","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"pendingOwner","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"acceptBlueprintOwnership"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"sourcesHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"ackBlueprintSources"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintDefinitionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSourcesHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelBlueprintTransfer"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"enum Types.QuoteOperation","name":"operation","type":"uint8"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintSettlementAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"},{"internalType":"uint256","name":"payment","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reserved0","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServicePaymentAsset","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"managerHookGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAckedCurrentSources","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"pendingBlueprintOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSettlementAsset"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintSources"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setManagerHookGasLimit"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"},{"internalType":"uint16","name":"keeperBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"},{"internalType":"bytes32","name":"inputsHash","type":"bytes32"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address payable","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrowTo"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"blueprintDefinitionHash(uint64)":{"details":"Verifies an event-sourced copy of the definition (the master manager's BlueprintDefinitionRecorded event carries the full bytes)."},"claimDisputeBond()":{"details":"Pull-pattern. The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getBlueprintSettlementAsset(uint64)":{"details":"`address(0)` = native (also the default). The per-job rate (`getJobEventRate`) is in this asset's smallest unit."},"getJobEventRate(uint64,uint8)":{"details":"The returned rate is in the settlement asset's smallest unit — see `setJobEventRates` and `getServicePaymentAsset`."},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServicePaymentAsset(uint64)":{"details":"`address(0)` = native, otherwise the ERC20 the blueprint DEVELOPER declared (`setBlueprintSettlementAsset`) and the service pinned at activation. The customer does not choose this asset. Every per-job bill for the service is collected and distributed in this asset. Non-EventDriven services return `address(0)`. The per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit."},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setBlueprintSettlementAsset(uint64,address)":{"details":"The SAME party that sets the per-job rate (`setJobEventRates`) declares the settlement asset here, so the rate's units match the asset's decimals. Each service pins this at activation (`getServicePaymentAsset`); the customer cannot choose the asset (an EventDriven request must pass native `address(0)`). `address(0)` = native. A NON-native asset is validated against the manager allow-list (fail-closed). Changing the asset does not re-price already-live services."},"setJobEventRates(uint64,uint8[],uint256[])":{"details":"Rates are denominated in the SETTLEMENT ASSET's smallest unit, not a fixed 18-decimal scale. Each EventDriven service pins its settlement asset at activation (`getServicePaymentAsset`); a blueprint whose services settle in a 6-decimal token (e.g. Tempo PathUSD) must set rates in 6-dec units. The rate is per-blueprint but the decimals are per-service-asset, so a blueprint intended for a single settlement token should document that token's decimals."},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}},"withdrawRemainingEscrowTo(uint64,address)":{"details":"Service owner can route around blocklisting tokens / smart-account receive constraints. Caller must equal the service owner; recipient is arbitrary but must be non-zero."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptBlueprintOwnership(uint64)":{"notice":"Accept a pending blueprint ownership transfer (step 2 of 2)"},"ackBlueprintSources(uint64,bytes32)":{"notice":"Acknowledge the blueprint's current cold-start sources digest (operator opt-in)"},"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintDefinitionHash(uint64)":{"notice":"keccak256 of the ABI-encoded definition captured at creation."},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSourcesHash(uint64)":{"notice":"The current cold-start sources digest for a blueprint"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"cancelBlueprintTransfer(uint64)":{"notice":"Cancel a pending blueprint ownership transfer"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,uint8,uint64,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getBlueprintSettlementAsset(uint64)":{"notice":"Get the settlement asset the blueprint's EventDriven services bill in."},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServicePaymentAsset(uint64)":{"notice":"Get a service's per-job (EventDriven) settlement asset."},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"managerHookGasLimit()":{"notice":"The effective blueprint-manager hook gas budget"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorAckedCurrentSources(uint64,address)":{"notice":"Whether `operator` has acked the blueprint's current cold-start sources"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingBlueprintOwner(uint64)":{"notice":"The pending owner of a blueprint (zero if none)"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setBlueprintSettlementAsset(uint64,address)":{"notice":"Set the settlement asset every EventDriven service of this blueprint bills in (blueprint owner only)."},"setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])":{"notice":"Replace a blueprint's binary sources (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setManagerHookGasLimit(uint256)":{"notice":"Set the per-deployment blueprint-manager hook gas budget (0 = default 500k)"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8,bytes32),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Propose a transfer of blueprint ownership (step 1 of 2)"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination to the service owner."},"withdrawRemainingEscrowTo(uint64,address)":{"notice":"Withdraw remaining escrow after termination to a service-owner-chosen address."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x986ee9f21c1a3a26b7a410ef32e5b16d61b9bf45723de7b4b056fb0797027d92","urls":["bzz-raw://4af3b363843eb37e1249587a411714ca377cc521a1f86615238c660c13a0d227","dweb:/ipfs/QmU6VKvwp9eezFKeyTyHBeUg9PU35nZLwmbyraZB94ChZu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xeadb3019d2cf874a55f76ec5909594a30e8699f3f619f35ef3d0f4b598b62ab4","urls":["bzz-raw://34d6d2f4e2952eb941297aaeeee80d9d201d209019490c187aa9782f5e2ee68b","dweb:/ipfs/QmY1UX6V2y7AMVV8AzggPbSTX19Z5Nr5mayfjjJTZs8FFU"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0xce666d409611f041d08161dbc39f4165da7c0484baa6aacc60815dccf4a2583a","urls":["bzz-raw://d9c0e27ac2429ac4acbea9f203729b10ca4f2548815c9a817485ed8d236e040f","dweb:/ipfs/QmWwkDVeuHc5UaDt8LU3Swr8PXCE5k1mdwH9zFWWbcybsz"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0x495e924d3a8ea1120fc84dce2cea964b2bca1d9e3ca62782ffe393c6b268d783","urls":["bzz-raw://f3b0de01210ef2063ced453e6e3716ba90569d16a1f07ebb592e10d99f62eb20","dweb:/ipfs/QmYm2E2WLSmXHaQPW51LNi8ovG353DgPb25Adn37X1WCyF"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0x980e7d365c0f92fbd9f3cbf3c1f66bbf3eacc40f13141c74c27048d8902a15ab","urls":["bzz-raw://30d48fd1bcb9cc373a2b716031009d3a17efc9ffca3bc0122f53582d01bb9e17","dweb:/ipfs/QmdFMKa3DALm3k4Sab3TudxmvKL4fYJgaZbVVWP6K8r24e"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x6e07083fdfce3e1579adbd042926949e52babf52b4dcc47a748870d6ba303cf8","urls":["bzz-raw://879b4ec92dfcd8e279a42b142459baeecd393ae0f8d863ec66f5818a1b27609f","dweb:/ipfs/QmcfESvu7GL9eqadrESzzNTdL7ro4R1hinZTJhKFrsAm7C"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x06c3732615ffaeb9f15c6e9564576e093f0e47558752a7d5a0e04b2609bd35d9","urls":["bzz-raw://f2df987b007cf78ff365a48d3cdf5f1264739946e9800e8ab78adb9378adf516","dweb:/ipfs/QmfVuVLxUU6JcWQPkRg9nHi41KT6UmHpA2xtaW7AWQxT9a"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x011f6f9abdbd73d7d4e537244d2b2fad3fdb83738c40193c46ce333ab4ad27df","urls":["bzz-raw://fb0dfc34c8e16aa9172aedc71fc80b11a051e3dc60d7a951f21b60465b6ed779","dweb:/ipfs/QmZL7LFSJ8ePiq2ZjXrtU7hKPbYYyufk8LP9cf5xvvDehT"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x100d6994e9c4a6fdf048fa98a84776a9dd1c06c5e528e21ebf890fa927ff0b7a","urls":["bzz-raw://d9efab20aa73c4bc43c7f15315a0fd0644e9c3817b25fa497f7c94be95e044f3","dweb:/ipfs/QmXnCXZ8kMaN1XNj2hSwQbPMA2ZPhy3fg4RWyYzAxN5HTr"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/bindings/abi/MultiAssetDelegation.json b/bindings/abi/MultiAssetDelegation.json index 908972f4..8895e50a 100644 --- a/bindings/abi/MultiAssetDelegation.json +++ b/bindings/abi/MultiAssetDelegation.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ASSET_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"BPS_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMISSION_CHANGE_DELAY","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MAX_REWARD_MULTIPLIER_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MIN_LOCK_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TANGLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_ASSETS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_SHARES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"clearFacetSelectors","inputs":[{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"facetForSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAccumulatedDust","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAssetAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"lostAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getSnapshot","inputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorSnapshot","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"totalDelegated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"nativeMinOperatorStake","type":"uint256","internalType":"uint256"},{"name":"nativeMinDelegation","type":"uint256","internalType":"uint256"},{"name":"_operatorCommissionBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastRoundAdvance","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nativeEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nextSlashId","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerFacet","inputs":[{"name":"facet","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerFacetSelectors","inputs":[{"name":"facet","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requireAdapters","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"resetPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"slashHistory","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"DustAccumulated","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalDust","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DustSwept","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FacetRegistered","inputs":[{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FacetSelectorCleared","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"FacetSelectorSet","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorDelegationModeSet","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"mode","type":"uint8","indexed":false,"internalType":"enum Types.DelegationMode"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorWhitelistUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PendingSlashCountReset","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashDecremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashIncremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedPrincipalReconciled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"assetHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"BlueprintNotRegisteredForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotAContract","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SelectorAlreadyRegistered","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"existingFacet","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523461003e5761001161004d565b610019610043565b6144696103078239608051818181613894015281816138f90152613aa8015261446990f35b610049565b60405190565b5f80fd5b61005561005f565b61005d61022a565b565b610067610069565b565b610071610073565b565b61007b61007d565b565b610085610087565b565b61008f610091565b565b61009961009b565b565b6100a36100a5565b565b6100ad6100af565b565b6100b76100b9565b565b6100c16100c3565b565b6100cb6100cd565b565b6100d56100d7565b565b6100df6100e1565b565b6100e961012d565b565b60018060a01b031690565b90565b61010d610108610112926100eb565b6100f6565b6100eb565b90565b61011e906100f9565b90565b61012a90610115565b90565b61013630610121565b608052565b60401c90565b60ff1690565b6101536101589161013b565b610141565b90565b6101659054610147565b90565b5f0190565b5f1c90565b60018060401b031690565b61018961018e9161016d565b610172565b90565b61019b905461017d565b90565b60018060401b031690565b5f1b90565b906101bf60018060401b03916101a9565b9181191691161790565b6101dd6101d86101e29261019e565b6100f6565b61019e565b90565b90565b906101fd6101f8610204926101c9565b6101e5565b82546101ae565b9055565b6102119061019e565b9052565b9190610228905f60208501940190610208565b565b6102326102e2565b61023d5f820161015b565b6102c65761024c5f8201610191565b61026461025e60018060401b0361019e565b9161019e565b0361026d575b50565b610280905f60018060401b0391016101e8565b60018060401b036102bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916102b4610043565b91829182610215565b0390a15f61026a565b5f63f92ee8a960e01b8152806102de60048201610168565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009056fe60806040526004361015610015575b366134e257005b61001f5f356103de565b806301ffc9a7146103d957806305d64e38146103d45780630aa8b110146103cf57806318056dc2146103ca57806319e82e61146103c5578063248a9ca3146103c05780632f2ff15d146103bb57806332273f61146103b657806336568abe146103b1578063453eccea146103ac57806346d163aa146103a757806349147411146103a25780634962f88f1461039d5780634de8addc146103985780634e9c929a146103935780634f1ef2861461038e5780635095af641461038957806352d1902d1461038457806354de23201461037f5780635c975abb1461037a578063602356e31461037557806366c368751461037057806372b5032d1461036b57806375b238fc1461036657806377ab2cf3146103615780637df92ada1461035c57806388c47f68146103575780638a19c8bc146103525780638a7fe60f1461034d57806390837ff41461034857806391d14854146103435780639480e4dd1461033e5780639494f4261461033957806396085673146103345780639722f4b91461032f5780639e8705851461032a578063a217fddf14610325578063a457af3d14610320578063a4b32de81461031b578063a7fa6f9814610316578063aaf5eb6814610311578063ad3cb1cc1461030c578063b54b2b9e14610307578063b5e2a87a14610302578063b6608409146102fd578063ba05bbf5146102f8578063c07449e2146102f3578063c550d938146102ee578063cbb6d6bd146102e9578063d27a6f06146102e4578063d45ff582146102df578063d547741f146102da578063db8a173a146102d5578063dd764abf146102d0578063e07dec29146102cb578063e1a45218146102c6578063e27e05c1146102c1578063f3c9b311146102bc578063f72c0d8b146102b75763f7cb789a0361000e57612042565b611ffe565b611f9a565b611f2d565b611ef8565b611e8f565b611e26565b611db4565b611d71565b611d3c565b611cce565b611c5e565b611b9c565b611b66565b611af8565b611ab4565b611a48565b6119db565b611997565b611868565b6117f5565b611788565b611723565b611601565b611591565b611522565b6114cc565b61147d565b61140e565b6113d8565b6113a3565b61136e565b611317565b6112d5565b611266565b6111f8565b611188565b611123565b6110ee565b6110b9565b611055565b611020565b610fb3565b610f7e565b610f25565b610dc9565b610d1a565b610cd5565b610c68565b610c20565b610bcd565b610b61565b610b2c565b610ac2565b610a60565b6109d6565b61090f565b610882565b61051f565b61046a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b61040b816103f6565b0361041257565b5f80fd5b9050359061042382610402565b565b9060208282031261043e5761043b915f01610416565b90565b6103ee565b151590565b61045190610443565b9052565b9190610468905f60208501940190610448565b565b3461049a57610496610485610480366004610425565b61207b565b61048d6103e4565b91829182610455565b0390f35b6103ea565b5f9103126104a957565b6103ee565b1c90565b60018060401b031690565b6104cd9060086104d293026104ae565b6104b2565b90565b906104e091546104bd565b90565b6104ef5f6010906104d5565b90565b60018060401b031690565b610506906104f2565b9052565b919061051d905f602085019401906104fd565b565b3461054f5761052f36600461049f565b61054b61053a6104e3565b6105426103e4565b9182918261050a565b0390f35b6103ea565b60018060a01b031690565b61056890610554565b90565b6105748161055f565b0361057b57565b5f80fd5b9050359061058c8261056b565b565b610597816104f2565b0361059e57565b5f80fd5b905035906105af8261058e565b565b91906040838203126105d957806105cd6105d6925f860161057f565b936020016105a2565b90565b6103ee565b90565b6105f56105f06105fa92610554565b6105de565b610554565b90565b610606906105e1565b90565b610612906105fd565b90565b9061061f90610609565b5f5260205260405f2090565b61063f61063a610644926104f2565b6105de565b6104f2565b90565b906106519061062b565b5f5260205260405f2090565b5f1c90565b61066e6106739161065d565b6104b2565b90565b6106809054610662565b90565b60401c90565b61069561069a91610683565b6104b2565b90565b6106a79054610689565b90565b60801c90565b6106bc6106c1916106aa565b6104b2565b90565b6106ce90546106b0565b90565b90565b6106e06106e59161065d565b6106d1565b90565b6106f290546106d4565b90565b61ffff1690565b61070861070d9161065d565b6106f5565b90565b61071a90546106fc565b90565b90565b61072c6107319161065d565b61071d565b90565b61073e9054610720565b90565b90610750610755926055610615565b610647565b6107605f8201610676565b9161076c5f830161069d565b916107785f82016106c4565b91610785600183016106e8565b9161079260028201610710565b9161079f60038301610734565b916107ac60048201610734565b916107c560066107be60058501610734565b93016106e8565b90565b90565b6107d4906107c8565b9052565b61ffff1690565b6107e8906107d8565b9052565b90565b6107f8906107ec565b9052565b9694929099989795939161012088019a5f8901610818916104fd565b60208801610825916104fd565b60408701610832916104fd565b6060860161083f916107cb565b6080850161084c916107df565b60a08401610859916107ef565b60c08301610866916107ef565b60e08201610873916107ef565b61010001610880916107cb565b565b346108bd576108b961089e6108983660046105b1565b90610741565b956108b09997999591959492946103e4565b998a998a6107fc565b0390f35b6103ea565b90565b6108d96108d46108de926108c2565b6105de565b6107d8565b90565b6108ec612af86108c5565b90565b6108f76108e1565b90565b919061090d905f602085019401906107df565b565b3461093f5761091f36600461049f565b61093b61092a6108ef565b6109326103e4565b918291826108fa565b0390f35b6103ea565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156109885781359160018060401b03831161098357602001926020830284011161097e57565b61094c565b610948565b610944565b9190916040818403126109cc576109a6835f830161057f565b92602082013560018060401b0381116109c7576109c39201610950565b9091565b6103f2565b6103ee565b5f0190565b34610a05576109ef6109e936600461098d565b9161213b565b6109f76103e4565b80610a01816109d1565b0390f35b6103ea565b610a13816107c8565b03610a1a57565b5f80fd5b90503590610a2b82610a0a565b565b90602082820312610a4657610a43915f01610a1e565b90565b6103ee565b9190610a5e905f602085019401906107cb565b565b34610a9057610a8c610a7b610a76366004610a2d565b61217f565b610a836103e4565b91829182610a4b565b0390f35b6103ea565b9190604083820312610abd5780610ab1610aba925f8601610a1e565b9360200161057f565b90565b6103ee565b34610af157610adb610ad5366004610a95565b906121d3565b610ae36103e4565b80610aed816109d1565b0390f35b6103ea565b610b06906008610b0b93026104ae565b6106f5565b90565b90610b199154610af6565b90565b610b296001601090610b0e565b90565b34610b5c57610b3c36600461049f565b610b58610b47610b1c565b610b4f6103e4565b918291826108fa565b0390f35b6103ea565b34610b9057610b7a610b74366004610a95565b906121df565b610b826103e4565b80610b8c816109d1565b0390f35b6103ea565b90565b610bac610ba7610bb192610b95565b6105de565b6107d8565b90565b610bbf614650610b98565b90565b610bca610bb4565b90565b34610bfd57610bdd36600461049f565b610bf9610be8610bc2565b610bf06103e4565b918291826108fa565b0390f35b6103ea565b90602082820312610c1b57610c18915f0161057f565b90565b6103ee565b34610c4e57610c38610c33366004610c02565b61231d565b610c406103e4565b80610c4a816109d1565b0390f35b6103ea565b9190610c66905f602085019401906107ef565b565b34610c9857610c94610c83610c7e366004610c02565b6123ff565b610c8b6103e4565b91829182610c53565b0390f35b6103ea565b90565b610cb4610caf610cb992610c9d565b6105de565b6107d8565b90565b610cc7612710610ca0565b90565b610cd2610cbc565b90565b34610d0557610ce536600461049f565b610d01610cf0610cca565b610cf86103e4565b918291826108fa565b0390f35b6103ea565b610d1760016008906104d5565b90565b34610d4a57610d2a36600461049f565b610d46610d35610d0a565b610d3d6103e4565b9182918261050a565b0390f35b6103ea565b9190604083820312610d775780610d6b610d74925f86016105a2565b9360200161057f565b90565b6103ee565b90610d869061062b565b5f5260205260405f2090565b90610d9c90610609565b5f5260205260405f2090565b610dc1610dc692610dbc6058935f94610d7c565b610d92565b6104d5565b90565b34610dfa57610df6610de5610ddf366004610d4f565b90610da8565b610ded6103e4565b9182918261050a565b0390f35b6103ea565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e2b90610e03565b810190811060018060401b03821117610e4357604052565b610e0d565b90610e5b610e546103e4565b9283610e21565b565b60018060401b038111610e7957610e75602091610e03565b0190565b610e0d565b90825f939282370152565b90929192610e9e610e9982610e5d565b610e48565b93818552602085019082840111610eba57610eb892610e7e565b565b610dff565b9080601f83011215610edd57816020610eda93359101610e89565b90565b610944565b919091604081840312610f2057610efb835f830161057f565b92602082013560018060401b038111610f1b57610f189201610ebf565b90565b6103f2565b6103ee565b610f39610f33366004610ee2565b90612447565b610f416103e4565b80610f4b816109d1565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610f7b610f4f565b90565b34610fae57610f8e36600461049f565b610faa610f99610f73565b610fa16103e4565b91829182610a4b565b0390f35b6103ea565b34610fe357610fc336600461049f565b610fdf610fce6124be565b610fd66103e4565b91829182610a4b565b0390f35b6103ea565b90565b610fff610ffa61100492610fe8565b6105de565b6107d8565b90565b6110126130d4610feb565b90565b61101d611007565b90565b346110505761103036600461049f565b61104c61103b611015565b6110436103e4565b918291826108fa565b0390f35b6103ea565b346110855761106536600461049f565b6110816110706124f2565b6110786103e4565b91829182610455565b0390f35b6103ea565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6110b661108a565b90565b346110e9576110c936600461049f565b6110e56110d46110ae565b6110dc6103e4565b91829182610a4b565b0390f35b6103ea565b3461111e5761111a611109611104366004610c02565b612514565b6111116103e4565b9182918261050a565b0390f35b6103ea565b346111545761115061113f611139366004610d4f565b90612533565b6111476103e4565b9182918261050a565b0390f35b6103ea565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b611185611159565b90565b346111b85761119836600461049f565b6111b46111a361117d565b6111ab6103e4565b91829182610a4b565b0390f35b6103ea565b60ff1690565b6111d39060086111d893026104ae565b6111bd565b90565b906111e691546111c3565b90565b6111f560055f906111db565b90565b346112285761120836600461049f565b6112246112136111e9565b61121b6103e4565b91829182610455565b0390f35b6103ea565b90565b61124461123f6112499261122d565b6105de565b6104f2565b90565b611258624f1a00611230565b90565b61126361124c565b90565b346112965761127636600461049f565b61129261128161125b565b6112896103e4565b9182918261050a565b0390f35b6103ea565b90565b6112b26112ad6112b79261129b565b6105de565b6107ec565b90565b6112c76305f5e10061129e565b90565b6112d26112ba565b90565b34611305576112e536600461049f565b6113016112f06112ca565b6112f86103e4565b91829182610c53565b0390f35b6103ea565b6113145f806104d5565b90565b346113475761132736600461049f565b61134361133261130a565b61133a6103e4565b9182918261050a565b0390f35b6103ea565b6113559061055f565b9052565b919061136c905f6020850194019061134c565b565b3461139e5761139a611389611384366004610c02565b6125a1565b6113916103e4565b91829182611359565b0390f35b6103ea565b346113d3576113cf6113be6113b9366004610425565b6125c0565b6113c66103e4565b91829182611359565b0390f35b6103ea565b34611409576114056113f46113ee366004610a95565b906125eb565b6113fc6103e4565b91829182610455565b0390f35b6103ea565b3461143e5761143a611429611424366004610c02565b61261d565b6114316103e4565b9182918261050a565b0390f35b6103ea565b90916060828403126114785761147561145e845f850161057f565b9361146c81602086016105a2565b9360400161057f565b90565b6103ee565b346114ae576114aa611499611493366004611443565b91612871565b6114a16103e4565b91829182610c53565b0390f35b6103ea565b6114c9906114c46056915f92610d92565b6104d5565b90565b346114fc576114f86114e76114e2366004610c02565b6114b3565b6114ef6103e4565b9182918261050a565b0390f35b6103ea565b61151a61151f926115156057935f94610d7c565b610d92565b6104d5565b90565b346115535761154f61153e611538366004610d4f565b90611501565b6115466103e4565b9182918261050a565b0390f35b6103ea565b90565b61156f61156a61157492611558565b6105de565b6104f2565b90565b61158362278d0061155b565b90565b61158e611577565b90565b346115c1576115a136600461049f565b6115bd6115ac611586565b6115b46103e4565b9182918261050a565b0390f35b6103ea565b90565b5f1b90565b6115e26115dd6115e7926115c6565b6115c9565b6107c8565b90565b6115f35f6115ce565b90565b6115fe6115ea565b90565b346116315761161136600461049f565b61162d61161c6115f6565b6116246103e4565b91829182610a4b565b0390f35b6103ea565b61163f906104f2565b9052565b61164c906107c8565b9052565b611659906107d8565b9052565b611666906107ec565b9052565b906101008061170b936116835f8201515f860190611636565b61169560208201516020860190611636565b6116a760408201516040860190611636565b6116b960608201516060860190611643565b6116cb60808201516080860190611650565b6116dd60a082015160a086019061165d565b6116ef60c082015160c086019061165d565b61170160e082015160e086019061165d565b0151910190611643565b565b9190611721905f610120850194019061166a565b565b346117545761175061173f6117393660046105b1565b90612a1f565b6117476103e4565b9182918261170d565b0390f35b6103ea565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b611785611759565b90565b346117b85761179836600461049f565b6117b46117a361177d565b6117ab6103e4565b91829182610a4b565b0390f35b6103ea565b90565b6117d46117cf6117d9926117bd565b6105de565b6107d8565b90565b6117e76138a46117c0565b90565b6117f26117dc565b90565b346118255761180536600461049f565b6118216118106117ea565b6118186103e4565b918291826108fa565b0390f35b6103ea565b90565b61184161183c6118469261182a565b6105de565b6107ec565b90565b61185a670de0b6b3a764000061182d565b90565b611865611849565b90565b346118985761187836600461049f565b61189461188361185d565b61188b6103e4565b91829182610c53565b0390f35b6103ea565b60018060401b0381116118b9576118b5602091610e03565b0190565b610e0d565b906118d06118cb8361189d565b610e48565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61190660056118be565b90611913602083016118d5565b565b61191d6118fc565b90565b611928611915565b90565b611933611920565b90565b5190565b60209181520190565b90825f9392825e0152565b61196d61197660209361197b9361196481611936565b9384809361193a565b95869101611943565b610e03565b0190565b6119949160208201915f81840391015261194e565b90565b346119c7576119a736600461049f565b6119c36119b261192b565b6119ba6103e4565b9182918261197f565b0390f35b6103ea565b6119d860075f906111db565b90565b34611a0b576119eb36600461049f565b611a076119f66119cc565b6119fe6103e4565b91829182610455565b0390f35b6103ea565b90565b611a27611a22611a2c92611a10565b6105de565b6107d8565b90565b611a3a614e20611a13565b90565b611a45611a2f565b90565b34611a7857611a5836600461049f565b611a74611a63611a3d565b611a6b6103e4565b918291826108fa565b0390f35b6103ea565b90565b611a94611a8f611a9992611a7d565b6105de565b6107ec565b90565b611aa66001611a80565b90565b611ab1611a9c565b90565b34611ae457611ac436600461049f565b611ae0611acf611aa9565b611ad76103e4565b91829182610c53565b0390f35b6103ea565b611af55f6018906104d5565b90565b34611b2857611b0836600461049f565b611b24611b13611ae9565b611b1b6103e4565b9182918261050a565b0390f35b6103ea565b90602080611b4f93611b455f8201515f86019061165d565b015191019061165d565b565b9190611b64905f60408501940190611b2d565b565b34611b9757611b93611b82611b7c366004610d4f565b90612af6565b611b8a6103e4565b91829182611b51565b0390f35b6103ea565b34611bcd57611bc9611bb8611bb2366004610d4f565b90612b1e565b611bc06103e4565b9182918261050a565b0390f35b6103ea565b611bdb816107ec565b03611be257565b5f80fd5b90503590611bf382611bd2565b565b611bfe816107d8565b03611c0557565b5f80fd5b90503590611c1682611bf5565b565b608081830312611c5957611c2e825f830161057f565b92611c56611c3f8460208501611be6565b93611c4d8160408601611be6565b93606001611c09565b90565b6103ee565b34611c9057611c7a611c71366004611c18565b9291909161330c565b611c826103e4565b80611c8c816109d1565b0390f35b6103ea565b90565b611cac611ca7611cb192611c95565b6105de565b6104f2565b90565b611cc06276a700611c98565b90565b611ccb611cb4565b90565b34611cfe57611cde36600461049f565b611cfa611ce9611cc3565b611cf16103e4565b9182918261050a565b0390f35b6103ea565b90565b611d1a611d15611d1f92611d03565b6105de565b6104f2565b90565b611d2e62127500611d06565b90565b611d39611d22565b90565b34611d6c57611d4c36600461049f565b611d68611d57611d31565b611d5f6103e4565b9182918261050a565b0390f35b6103ea565b34611da057611d8a611d84366004610a95565b90613344565b611d926103e4565b80611d9c816109d1565b0390f35b6103ea565b611db160015f906104d5565b90565b34611de457611dc436600461049f565b611de0611dcf611da5565b611dd76103e4565b9182918261050a565b0390f35b6103ea565b90565b611e00611dfb611e0592611de9565b6105de565b6107ec565b90565b611e18662386f26fc10000611dec565b90565b611e23611e08565b90565b34611e5657611e3636600461049f565b611e52611e41611e1b565b611e496103e4565b91829182610c53565b0390f35b6103ea565b90602082820312611e8a575f82013560018060401b038111611e8557611e819201610950565b9091565b6103f2565b6103ee565b34611ebe57611ea8611ea2366004611e5b565b906133a5565b611eb06103e4565b80611eba816109d1565b0390f35b6103ea565b611ed7611ed2611edc92610c9d565b6105de565b6107ec565b90565b611eea612710611ec3565b90565b611ef5611edf565b90565b34611f2857611f0836600461049f565b611f24611f13611eed565b611f1b6103e4565b91829182610c53565b0390f35b6103ea565b34611f5c57611f46611f403660046105b1565b906134d6565b611f4e6103e4565b80611f58816109d1565b0390f35b6103ea565b90565b611f78611f73611f7d92611f61565b6105de565b6104f2565b90565b611f8c62ed4e00611f64565b90565b611f97611f80565b90565b34611fca57611faa36600461049f565b611fc6611fb5611f8f565b611fbd6103e4565b9182918261050a565b0390f35b6103ea565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390565b611ffb611fcf565b90565b3461202e5761200e36600461049f565b61202a612019611ff3565b6120216103e4565b91829182610a4b565b0390f35b6103ea565b61203f5f6008906104d5565b90565b346120725761205236600461049f565b61206e61205d612033565b6120656103e4565b9182918261050a565b0390f35b6103ea565b5f90565b612083612077565b508061209e612098637965db0b60e01b6103f6565b916103f6565b149081156120ab575b5090565b6120b591506134e7565b5f6120a7565b60018060401b0381116120d15760208091020190565b610e0d565b909291926120eb6120e6826120bb565b610e48565b938185526020808601920283019281841161212857915b83831061210f5750505050565b6020809161211d8486610416565b815201920191612102565b61094c565b6121389136916120d6565b90565b612157926121519161214b61351f565b9261212d565b9061355a565b565b5f90565b612166906107c8565b90565b906121739061215d565b5f5260205260405f2090565b60016121a06121a692612190612159565b505f61219a6136ce565b01612169565b016106e8565b90565b906121c4916121bf6121ba8261217f565b6136f2565b6121c6565b565b906121d091613706565b50565b906121dd916121a9565b565b90806121fa6121f46121ef6137bd565b61055f565b9161055f565b0361220b57612208916137ca565b50565b5f63334bd91960e11b815280612223600482016109d1565b0390fd5b612230906105e1565b90565b61223c90612227565b90565b612248906105fd565b90565b60e01b90565b9050519061225e82610402565b565b90929192612275612270826120bb565b610e48565b93818552602080860192028301928184116122b257915b8383106122995750505050565b602080916122a78486612251565b81520192019161228c565b61094c565b9080601f830112156122d5578160206122d293519101612260565b90565b610944565b90602082820312612308575f82015160018060401b0381116123035761230092016122b7565b90565b6103f2565b6103ee565b6123156103e4565b3d5f823e3d90fd5b61232561351f565b6123505f61233a61233584612233565b61223f565b636e25b978906123486103e4565b93849261224b565b82528180612360600482016109d1565b03915afa80156123e05761237c915f916123be575b508261355a565b6123a67f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d91610609565b906123af6103e4565b806123b9816109d1565b0390a2565b6123da91503d805f833e6123d28183610e21565b8101906122da565b5f612375565b61230d565b5f90565b906123f390610609565b5f5260205260405f2090565b61241661241b9161240e6123e5565b5060196123e9565b610734565b90565b906124309161242b613883565b612432565b565b90612445916124408161393d565b613999565b565b906124519161241e565b565b6124649061245f613a97565b6124b2565b90565b90565b61247e61247961248392612467565b6115c9565b6107c8565b90565b6124af7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61246a565b90565b506124bb612486565b90565b6124ce6124c9612159565b612453565b90565b6124dd6124e29161065d565b6111bd565b90565b6124ef90546124d1565b90565b6124fa612077565b5061250d5f612507613af5565b016124e5565b90565b5f90565b61252b61253091612523612510565b506056610d92565b610676565b90565b6125589161254e61255392612546612510565b506057610d7c565b610d92565b610676565b90565b5f90565b9061256990610609565b5f5260205260405f2090565b60018060a01b031690565b61258c6125919161065d565b612575565b90565b61259e9054612580565b90565b6125b86125bd916125b061255b565b50600661255f565b612594565b90565b6125d2906125cc61255b565b50613b2f565b90565b906125df90610609565b5f5260205260405f2090565b61261a915f61260f612615936125ff612077565b50826126096136ce565b01612169565b016125d5565b6124e5565b90565b6126346126399161262c612510565b506021610d92565b610676565b90565b90612646906104f2565b9052565b90612654906107c8565b9052565b90612662906107d8565b9052565b90612670906107ec565b9052565b61267f610120610e48565b90565b906127606127566006612693612674565b946126aa6126a25f8301610676565b5f880161263c565b6126c16126b85f830161069d565b6020880161263c565b6126d86126cf5f83016106c4565b6040880161263c565b6126f06126e7600183016106e8565b6060880161264a565b6127086126ff60028301610710565b60808801612658565b61272061271760038301610734565b60a08801612666565b61273861272f60048301610734565b60c08801612666565b61275061274760058301610734565b60e08801612666565b016106e8565b610100840161264a565b565b61276b90612682565b90565b61277890516104f2565b90565b61278f61278a612794926115c6565b6105de565b6104f2565b90565b6127ab6127a66127b0926115c6565b6105de565b6107ec565b90565b6127bd90516107c8565b90565b6127ca90516107ec565b90565b634e487b7160e01b5f52601160045260245ffd5b6127f06127f6919392936107ec565b926107ec565b820391821161280157565b6127cd565b61281561281b919392936107ec565b926107ec565b916128278382026107ec565b92818404149015171561283657565b6127cd565b634e487b7160e01b5f52601260045260245ffd5b61285b612861916107ec565b916107ec565b90811561286c570490565b61283b565b9291909261289a6128956128836123e5565b9561289060558590610615565b610647565b612762565b916128a65f840161276e565b6128b86128b25f61277b565b916104f2565b1461297957906128d591906128cf606085016127b3565b91613c63565b90816128e96128e35f612797565b916107ec565b14612969576128fa60c082016127c0565b61291761291161290c60e085016127c0565b6107ec565b916107ec565b11612921575b5050565b6129619293509061294d8261294760e061294060c061295397016127c0565b92016127c0565b906127e1565b90612806565b61295b611849565b9061284f565b905f8061291d565b505090506129765f612797565b90565b50505090506129875f612797565b90565b5f90565b5f90565b5f90565b5f90565b6129a2612674565b90602080808080808080808a6129b661298a565b8152016129c161298a565b8152016129cc61298a565b8152016129d761298e565b8152016129e2612992565b8152016129ed612996565b8152016129f8612996565b815201612a03612996565b815201612a0e61298e565b81525050565b612a1c61299a565b90565b612a4491612a3a612a3f92612a32612a14565b506055610615565b610647565b612762565b90565b612a516040610e48565b90565b612a5c612a47565b9060208083612a69612996565b815201612a74612996565b81525050565b612a82612a54565b90565b90612a8f9061062b565b5f5260205260405f2090565b90612aa590610609565b5f5260205260405f2090565b90612ae8612adf6001612ac2612a47565b94612ad9612ad15f8301610734565b5f8801612666565b01610734565b60208401612666565b565b612af390612ab1565b90565b612b1b91612b11612b1692612b09612a7a565b506010612a85565b612a9b565b612aea565b90565b612b4391612b39612b3e92612b31612510565b506058610d7c565b610d92565b610676565b90565b612b52612b5791610683565b6111bd565b90565b612b649054612b46565b90565b612b7b612b76612b8092611a7d565b6105de565b6104f2565b90565b612b8c906105fd565b90565b90612ba060018060401b03916115c9565b9181191691161790565b90565b90612bc2612bbd612bc99261062b565b612baa565b8254612b8f565b9055565b60401b90565b90612be260ff60401b91612bcd565b9181191691161790565b612bf590610443565b90565b90565b90612c10612c0b612c1792612bec565b612bf8565b8254612bd3565b9055565b612c2490612b67565b9052565b9190612c3b905f60208501940190612c1b565b565b909192612c48613d52565b93612c5d612c575f8701612b5a565b15610443565b93612c695f8701610676565b80612c7c612c765f61277b565b916104f2565b1480612d96575b90612c97612c916001612b67565b916104f2565b1480612d6e575b612ca9909115610443565b9081612d5d575b50612d4157612cd993612cce612cc66001612b67565b5f8901612bad565b85612d2f575b61314e565b612ce1575b50565b612cee905f809101612bfb565b6001612d267fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d1d6103e4565b91829182612c28565b0390a15f612cde565b612d3c60015f8901612bfb565b612cd4565b5f63f92ee8a960e01b815280612d59600482016109d1565b0390fd5b612d68915015610443565b5f612cb0565b50612ca9612d7b30612b83565b3b612d8e612d885f612797565b916107ec565b149050612c9e565b5085612c83565b612db1612dac612db6926115c6565b6105de565b610554565b90565b612dc290612d9d565b90565b612dcf6040610e48565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612df057565b612dd2565b90612dff82612de6565b565b90612e0b90612df5565b9052565b90612e199061055f565b9052565b612e31612e2c612e36926107ec565b6105de565b6107d8565b90565b612e4360c0610e48565b90565b90612e5090610443565b9052565b90612e5e9061215d565b5f5260205260405f2090565b612e749051610443565b90565b90612e8360ff916115c9565b9181191691161790565b90612ea2612e9d612ea992612bec565b612bf8565b8254612e77565b9055565b90612eb95f19916115c9565b9181191691161790565b612ed7612ed2612edc926107ec565b6105de565b6107ec565b90565b90565b90612ef7612ef2612efe92612ec3565b612edf565b8254612ead565b9055565b612f0c90516107d8565b90565b90612f1c61ffff916115c9565b9181191691161790565b612f3a612f35612f3f926107d8565b6105de565b6107d8565b90565b90565b90612f5a612f55612f6192612f26565b612f42565b8254612f0f565b9055565b90612ff460a06005612ffa94612f885f8201612f825f8801612e6a565b90612e8d565b612fa160018201612f9b602088016127c0565b90612ee2565b612fba60028201612fb4604088016127c0565b90612ee2565b612fd360038201612fcd606088016127c0565b90612ee2565b612fec60048201612fe6608088016127c0565b90612ee2565b019201612f02565b90612f45565b565b9061300691612f65565b565b60801b90565b9061301e61ffff60801b91613008565b9181191691161790565b9061303d61303861304492612f26565b612f42565b825461300e565b9055565b90565b61305f61305a61306492613048565b6105de565b6104f2565b90565b61307261546061304b565b90565b9061308a600160401b600160801b0391612bcd565b9181191691161790565b906130a96130a46130b09261062b565b612baa565b8254613075565b9055565b90565b6130cb6130c66130d0926130b4565b6105de565b6104f2565b90565b6130dd601c6130b7565b90565b60c01b90565b906130f860018060c01b0319916130e0565b9181191691161790565b9061311761311261311e9261062b565b612baa565b82546130e6565b9055565b90565b61313961313461313e92613122565b6105de565b6104f2565b90565b61314b6038613125565b90565b919091613159613d80565b613161613d94565b613169613dba565b613171613de0565b6131796115ea565b8161318391613706565b5061318c611159565b8161319691613706565b5061319f611759565b816131a991613706565b506131b2611fcf565b906131bc91613706565b505f806131c890612db9565b6131d0612dc5565b915f8301906131de91612e01565b60208201906131ec91612e0f565b6131f590613e4a565b90600192905f8091613205611edf565b61320e90612e1d565b93613217612e39565b965f88019061322591612e46565b602087019061323391612666565b604086019061324191612666565b61324a90612797565b606085019061325891612666565b61326190612797565b608084019061326f91612666565b60a083019061327d91612658565b60029061328991612e54565b9061329391612ffc565b60016132a0906005612e8d565b6132ab906001613028565b60016132b690612b67565b6132c0905f612bad565b6132c8613067565b6132d2905f613094565b6132da6130d3565b6132e4905f613102565b6132ec6130d3565b6132f7906001612bad565b6132ff613141565b61330a906001613094565b565b90613318939291612c3d565b565b906133359161333061332b8261217f565b6136f2565b613337565b565b90613341916137ca565b50565b9061334e9161331a565b565b600161335c91016107ec565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b9190811015613387576020020190565b613363565b3561339681610402565b90565b6133a2906103f6565b90565b9190916133b061351f565b6133b95f612797565b5b806133d76133d16133cc85889061335f565b6107ec565b916107ec565b101561345b57613456906133fd6133f86133f385888591613377565b61338c565b613f11565b61341161340c84878491613377565b61338c565b61343b7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb91613399565b906134446103e4565b8061344e816109d1565b0390a2613350565b6133ba565b50509050565b9061347b91613476613471611159565b6136f2565b61347d565b565b6134928261348d60218490610d92565b612bad565b6134d16134bf7f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f3592610609565b926134c86103e4565b9182918261050a565b0390a2565b906134e091613461565b565b613f27565b6134ef612077565b506135096135036301ffc9a760e01b6103f6565b916103f6565b1490565b61351d613518611fcf565b6136f2565b565b61352761350d565b565b5190565b9061353782613529565b811015613548576020809102010190565b613363565b61355790516103f6565b90565b91908261357761357161356c5f612db9565b61055f565b9161055f565b146136c957823b61359061358a5f612797565b916107ec565b146136c35761359e5f612797565b5b806135ba6135b46135af85613529565b6107ec565b916107ec565b10156136bd576135db6135d66135d184849061352d565b61354d565b613b2f565b806135f66135f06135eb5f612db9565b61055f565b9161055f565b1415806136a2575b61368b57506136869061362461361d61361885849061352d565b61354d565b869061402e565b61363761363284839061352d565b61354d565b8561366b6136657f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b3993613399565b91610609565b916136746103e4565b8061367e816109d1565b0390a3613350565b61359f565b61369d613698838561352d565b61354d565b613fd5565b50806136b66136b08761055f565b9161055f565b14156135fe565b50509050565b82613f86565b613f6a565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613704906136fe6137bd565b90614067565b565b61370e612077565b506137176136ce565b61372b6137258385906125eb565b15610443565b5f146137b657613755906137505f61374881600194018690612169565b0185906125d5565b612e8d565b9061375e6137bd565b9061379b61379561378f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9561215d565b92610609565b92610609565b926137a46103e4565b806137ae816109d1565b0390a4600190565b5050505f90565b6137c561255b565b503390565b6137d2612077565b506137db6136ce565b6137e68284906125eb565b5f146138705761380f9061380a5f613802818094018690612169565b0185906125d5565b612e8d565b906138186137bd565b9061385561384f6138497ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9561215d565b92610609565b92610609565b9261385e6103e4565b80613868816109d1565b0390a4600190565b5050505f90565b613880906105fd565b90565b61388c30613877565b6138be6138b87f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b1480156138e8575b6138cc57565b5f63703e46dd60e11b8152806138e4600482016109d1565b0390fd5b506138f16140a2565b61392361391d7f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b14156138c6565b5061393b613936611fcf565b6136f2565b565b6139469061392a565b565b613951906105e1565b90565b61395d90613948565b90565b613969906105fd565b90565b9050519061397982610a0a565b565b9060208282031261399457613991915f0161396c565b90565b6103ee565b91906139c760206139b16139ac86613954565b613960565b6352d1902d906139bf6103e4565b93849261224b565b825281806139d7600482016109d1565b03915afa80915f92613a67575b50155f14613a185750509060016139f957505b565b613a14905f918291634c9c8ce360e01b835260048301611359565b0390fd5b9283613a33613a2d613a28612486565b6107c8565b916107c8565b03613a4857613a439293506140c8565b6139f7565b613a63845f918291632a87526960e21b835260048301610a4b565b0390fd5b613a8991925060203d8111613a90575b613a818183610e21565b81019061397b565b905f6139e4565b503d613a77565b613aa030613877565b613ad2613acc7f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b03613ad957565b5f63703e46dd60e11b815280613af1600482016109d1565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b2390613399565b5f5260205260405f2090565b613b46613b4b91613b3e61255b565b50601f613b19565b612594565b90565b90613b5890610609565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b7d81613b67565b821015613b9757613b8f600491613b6b565b910201905f90565b613363565b90565b60ff1690565b613bb1613bb69161065d565b613b9f565b90565b613bc39054613ba5565b90565b60081c90565b613bd8613bdd91613bc6565b612575565b90565b613bea9054613bcc565b90565b613bf76040610e48565b90565b90613c30613c275f613c0a613bed565b94613c21613c19838301613bb9565b838801612e01565b01613be0565b60208401612e0f565b565b613c3b90613bfa565b90565b613c4d613c53919392936107ec565b926107ec565b8201809211613c5e57565b6127cd565b929192613c81613c7c613c746123e5565b926014613b4e565b613b64565b93613c8b85613b67565b93613c955f612797565b5b80613ca9613ca3886107ec565b916107ec565b1015613d4957613cc3613cbd888390613b74565b50613b9c565b613cce5f8201612594565b613ce0613cda8861055f565b9161055f565b1480613d1c575b613cfb575b50613cf690613350565b613c96565b613cf69194613d0f6001613d159301610734565b90613c3e565b9390613cec565b50613d31613d2c60028301613c32565b613e4a565b613d43613d3d866107c8565b916107c8565b14613ce7565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d7e614151565b565b613d88613d76565b565b613d92614151565b565b613d9c613d8a565b565b613da6614151565b613dae613db0565b565b613db86141ac565b565b613dc2613d9e565b565b613dcc614151565b613dd4613dd6565b565b613dde6141f2565b565b613de8613dc4565b565b613df49051612df5565b90565b613e01905161055f565b90565b613e0d90612df5565b90565b613e1990613e04565b9052565b916020613e3e929493613e3760408201965f830190613e10565b019061134c565b565b60200190565b5190565b613e52612159565b50613e94613e6d6020613e665f8501613dea565b9301613df7565b91613e85613e796103e4565b93849260208401613e1d565b60208201810382520382610e21565b613ea6613ea082613e46565b91613e40565b2090565b1b90565b91906008613ece910291613ec860018060a01b0384613eaa565b92613eaa565b9181191691161790565b90565b9190613ef1613eec613ef993610609565b613ed8565b908354613eae565b9055565b613f0f91613f0961255b565b91613edb565b565b5f613f20613f2592601f613b19565b613efd565b565b613f3a63ffffffff60e01b5f3516613b2f565b80613f55613f4f613f4a5f612db9565b61055f565b9161055f565b036142305763ffffffff60e01b5f3516614211565b5f63d92e233d60e01b815280613f82600482016109d1565b0390fd5b613fa1905f9182916322a2d07b60e21b835260048301611359565b0390fd5b613fae906103f6565b9052565b916020613fd3929493613fcc60408201965f830190613fa5565b019061134c565b565b613fef5f9283926310ae11a960e31b845260048401613fb2565b0390fd5b9061400460018060a01b03916115c9565b9181191691161790565b9061402361401e61402a92610609565b613ed8565b8254613ff3565b9055565b61403d6140429291601f613b19565b61400e565b565b91602061406592949361405e60408201965f83019061134c565b01906107cb565b565b9061407c6140768383906125eb565b15610443565b614084575050565b61409e5f92839263e2517d3f60e01b845260048401614044565b0390fd5b6140aa61255b565b506140c55f6140bf6140ba612486565b61424e565b01612594565b90565b906140d282614251565b816140fd7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610609565b906141066103e4565b80614110816109d1565b0390a261411c81613e46565b61412e6141285f612797565b916107ec565b115f146141425761413e91614321565b505b565b505061414c6142a6565b614140565b61416261415c614350565b15610443565b61416857565b5f631afcd79f60e31b815280614180600482016109d1565b0390fd5b61418c614151565b614194614196565b565b6141aa6141a1613af5565b5f809101612e8d565b565b6141b4614184565b565b6141be614151565b6141c66141d5565b565b6141d26001611a80565b90565b6141f06141e061436e565b5f6141e96141c8565b9101612ee2565b565b6141fa6141b6565b565b919061420f905f60208501940190613fa5565b565b61422c905f91829163c2a825f560e01b8352600483016141fc565b0390fd5b5f8091368280378136915af43d5f803e5f1461424a573d5ff35b3d5ffd5b90565b803b61426561425f5f612797565b916107ec565b1461428757614285905f61427f61427a612486565b61424e565b0161400e565b565b6142a2905f918291634c9c8ce360e01b835260048301611359565b0390fd5b346142b96142b35f612797565b916107ec565b116142c057565b5f63b398979f60e01b8152806142d8600482016109d1565b0390fd5b606090565b906142f36142ee83610e5d565b610e48565b918252565b3d5f14614313576143083d6142e1565b903d5f602084013e5b565b61431b6142dc565b90614311565b5f8061434d9361432f6142dc565b508390602081019051915af4906143446142f8565b90919091614392565b90565b614358612077565b5061436b5f614365613d52565b01612b5a565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143a69061439f6142dc565b5015610443565b5f146143b25750614416565b6143bb82613e46565b6143cd6143c75f612797565b916107ec565b14806143fb575b6143dc575090565b6143f7905f918291639996b31560e01b835260048301611359565b0390fd5b50803b61441061440a5f612797565b916107ec565b146143d4565b61441f81613e46565b61443161442b5f612797565b916107ec565b115f1461444057805190602001fd5b5f63d6bda27560e01b815280614458600482016109d1565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:4613:56:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;1313:53;;;:::i;:::-;;;:::i;:::-;:::o;390:3323:30:-;;;:::i;:::-;:::o;593:16311:55:-;;;:::i;:::-;:::o;833:35059:60:-;;;:::i;:::-;:::o;776:16259:59:-;;;:::i;:::-;:::o;749:54041:53:-;;;:::i;:::-;:::o;622:22009:57:-;;;:::i;:::-;:::o;427:30334:54:-;;;:::i;:::-;:::o;1094:3411:27:-;;;:::i;:::-;:::o;701:3153:26:-;;;:::i;:::-;:::o;2090:6192:22:-;;;:::i;:::-;:::o;769:414:28:-;;;:::i;:::-;:::o;422:447:18:-;;;:::i;:::-;:::o;226:3116:0:-;;;:::i;:::-;:::o;688:505:25:-;;;:::i;:::-;:::o;1033:4613:56:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5611:24:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5611::o;1033:4613:56:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;7711:422:23:-;7859:26;;:::i;:::-;7900:15;;:1;:15;;:::i;:::-;7896:76;;7985:14;;:1;:14;;:::i;:::-;:34;;1033:4613:56;;;;;7985:34:23;:::i;:::-;;;:::i;:::-;;7981:146;;7711:422;;:::o;7981:146::-;8035:33;1033:4613:56;8035:14:23;1033:4613:56;;;;;8035:1:23;:14;:33;:::i;:::-;1033:4613:56;;;;;8087:29:23;;;;;:::i;:::-;;;;;;:::i;:::-;;;;7981:146;;;7896:76;7938:23;;;;;;;;;;;;:::i;:::-;;;;8737:170;8837:64;8737:170;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610015575b366134e257005b61001f5f356103de565b806301ffc9a7146103d957806305d64e38146103d45780630aa8b110146103cf57806318056dc2146103ca57806319e82e61146103c5578063248a9ca3146103c05780632f2ff15d146103bb57806332273f61146103b657806336568abe146103b1578063453eccea146103ac57806346d163aa146103a757806349147411146103a25780634962f88f1461039d5780634de8addc146103985780634e9c929a146103935780634f1ef2861461038e5780635095af641461038957806352d1902d1461038457806354de23201461037f5780635c975abb1461037a578063602356e31461037557806366c368751461037057806372b5032d1461036b57806375b238fc1461036657806377ab2cf3146103615780637df92ada1461035c57806388c47f68146103575780638a19c8bc146103525780638a7fe60f1461034d57806390837ff41461034857806391d14854146103435780639480e4dd1461033e5780639494f4261461033957806396085673146103345780639722f4b91461032f5780639e8705851461032a578063a217fddf14610325578063a457af3d14610320578063a4b32de81461031b578063a7fa6f9814610316578063aaf5eb6814610311578063ad3cb1cc1461030c578063b54b2b9e14610307578063b5e2a87a14610302578063b6608409146102fd578063ba05bbf5146102f8578063c07449e2146102f3578063c550d938146102ee578063cbb6d6bd146102e9578063d27a6f06146102e4578063d45ff582146102df578063d547741f146102da578063db8a173a146102d5578063dd764abf146102d0578063e07dec29146102cb578063e1a45218146102c6578063e27e05c1146102c1578063f3c9b311146102bc578063f72c0d8b146102b75763f7cb789a0361000e57612042565b611ffe565b611f9a565b611f2d565b611ef8565b611e8f565b611e26565b611db4565b611d71565b611d3c565b611cce565b611c5e565b611b9c565b611b66565b611af8565b611ab4565b611a48565b6119db565b611997565b611868565b6117f5565b611788565b611723565b611601565b611591565b611522565b6114cc565b61147d565b61140e565b6113d8565b6113a3565b61136e565b611317565b6112d5565b611266565b6111f8565b611188565b611123565b6110ee565b6110b9565b611055565b611020565b610fb3565b610f7e565b610f25565b610dc9565b610d1a565b610cd5565b610c68565b610c20565b610bcd565b610b61565b610b2c565b610ac2565b610a60565b6109d6565b61090f565b610882565b61051f565b61046a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b61040b816103f6565b0361041257565b5f80fd5b9050359061042382610402565b565b9060208282031261043e5761043b915f01610416565b90565b6103ee565b151590565b61045190610443565b9052565b9190610468905f60208501940190610448565b565b3461049a57610496610485610480366004610425565b61207b565b61048d6103e4565b91829182610455565b0390f35b6103ea565b5f9103126104a957565b6103ee565b1c90565b60018060401b031690565b6104cd9060086104d293026104ae565b6104b2565b90565b906104e091546104bd565b90565b6104ef5f6010906104d5565b90565b60018060401b031690565b610506906104f2565b9052565b919061051d905f602085019401906104fd565b565b3461054f5761052f36600461049f565b61054b61053a6104e3565b6105426103e4565b9182918261050a565b0390f35b6103ea565b60018060a01b031690565b61056890610554565b90565b6105748161055f565b0361057b57565b5f80fd5b9050359061058c8261056b565b565b610597816104f2565b0361059e57565b5f80fd5b905035906105af8261058e565b565b91906040838203126105d957806105cd6105d6925f860161057f565b936020016105a2565b90565b6103ee565b90565b6105f56105f06105fa92610554565b6105de565b610554565b90565b610606906105e1565b90565b610612906105fd565b90565b9061061f90610609565b5f5260205260405f2090565b61063f61063a610644926104f2565b6105de565b6104f2565b90565b906106519061062b565b5f5260205260405f2090565b5f1c90565b61066e6106739161065d565b6104b2565b90565b6106809054610662565b90565b60401c90565b61069561069a91610683565b6104b2565b90565b6106a79054610689565b90565b60801c90565b6106bc6106c1916106aa565b6104b2565b90565b6106ce90546106b0565b90565b90565b6106e06106e59161065d565b6106d1565b90565b6106f290546106d4565b90565b61ffff1690565b61070861070d9161065d565b6106f5565b90565b61071a90546106fc565b90565b90565b61072c6107319161065d565b61071d565b90565b61073e9054610720565b90565b90610750610755926055610615565b610647565b6107605f8201610676565b9161076c5f830161069d565b916107785f82016106c4565b91610785600183016106e8565b9161079260028201610710565b9161079f60038301610734565b916107ac60048201610734565b916107c560066107be60058501610734565b93016106e8565b90565b90565b6107d4906107c8565b9052565b61ffff1690565b6107e8906107d8565b9052565b90565b6107f8906107ec565b9052565b9694929099989795939161012088019a5f8901610818916104fd565b60208801610825916104fd565b60408701610832916104fd565b6060860161083f916107cb565b6080850161084c916107df565b60a08401610859916107ef565b60c08301610866916107ef565b60e08201610873916107ef565b61010001610880916107cb565b565b346108bd576108b961089e6108983660046105b1565b90610741565b956108b09997999591959492946103e4565b998a998a6107fc565b0390f35b6103ea565b90565b6108d96108d46108de926108c2565b6105de565b6107d8565b90565b6108ec612af86108c5565b90565b6108f76108e1565b90565b919061090d905f602085019401906107df565b565b3461093f5761091f36600461049f565b61093b61092a6108ef565b6109326103e4565b918291826108fa565b0390f35b6103ea565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156109885781359160018060401b03831161098357602001926020830284011161097e57565b61094c565b610948565b610944565b9190916040818403126109cc576109a6835f830161057f565b92602082013560018060401b0381116109c7576109c39201610950565b9091565b6103f2565b6103ee565b5f0190565b34610a05576109ef6109e936600461098d565b9161213b565b6109f76103e4565b80610a01816109d1565b0390f35b6103ea565b610a13816107c8565b03610a1a57565b5f80fd5b90503590610a2b82610a0a565b565b90602082820312610a4657610a43915f01610a1e565b90565b6103ee565b9190610a5e905f602085019401906107cb565b565b34610a9057610a8c610a7b610a76366004610a2d565b61217f565b610a836103e4565b91829182610a4b565b0390f35b6103ea565b9190604083820312610abd5780610ab1610aba925f8601610a1e565b9360200161057f565b90565b6103ee565b34610af157610adb610ad5366004610a95565b906121d3565b610ae36103e4565b80610aed816109d1565b0390f35b6103ea565b610b06906008610b0b93026104ae565b6106f5565b90565b90610b199154610af6565b90565b610b296001601090610b0e565b90565b34610b5c57610b3c36600461049f565b610b58610b47610b1c565b610b4f6103e4565b918291826108fa565b0390f35b6103ea565b34610b9057610b7a610b74366004610a95565b906121df565b610b826103e4565b80610b8c816109d1565b0390f35b6103ea565b90565b610bac610ba7610bb192610b95565b6105de565b6107d8565b90565b610bbf614650610b98565b90565b610bca610bb4565b90565b34610bfd57610bdd36600461049f565b610bf9610be8610bc2565b610bf06103e4565b918291826108fa565b0390f35b6103ea565b90602082820312610c1b57610c18915f0161057f565b90565b6103ee565b34610c4e57610c38610c33366004610c02565b61231d565b610c406103e4565b80610c4a816109d1565b0390f35b6103ea565b9190610c66905f602085019401906107ef565b565b34610c9857610c94610c83610c7e366004610c02565b6123ff565b610c8b6103e4565b91829182610c53565b0390f35b6103ea565b90565b610cb4610caf610cb992610c9d565b6105de565b6107d8565b90565b610cc7612710610ca0565b90565b610cd2610cbc565b90565b34610d0557610ce536600461049f565b610d01610cf0610cca565b610cf86103e4565b918291826108fa565b0390f35b6103ea565b610d1760016008906104d5565b90565b34610d4a57610d2a36600461049f565b610d46610d35610d0a565b610d3d6103e4565b9182918261050a565b0390f35b6103ea565b9190604083820312610d775780610d6b610d74925f86016105a2565b9360200161057f565b90565b6103ee565b90610d869061062b565b5f5260205260405f2090565b90610d9c90610609565b5f5260205260405f2090565b610dc1610dc692610dbc6058935f94610d7c565b610d92565b6104d5565b90565b34610dfa57610df6610de5610ddf366004610d4f565b90610da8565b610ded6103e4565b9182918261050a565b0390f35b6103ea565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e2b90610e03565b810190811060018060401b03821117610e4357604052565b610e0d565b90610e5b610e546103e4565b9283610e21565b565b60018060401b038111610e7957610e75602091610e03565b0190565b610e0d565b90825f939282370152565b90929192610e9e610e9982610e5d565b610e48565b93818552602085019082840111610eba57610eb892610e7e565b565b610dff565b9080601f83011215610edd57816020610eda93359101610e89565b90565b610944565b919091604081840312610f2057610efb835f830161057f565b92602082013560018060401b038111610f1b57610f189201610ebf565b90565b6103f2565b6103ee565b610f39610f33366004610ee2565b90612447565b610f416103e4565b80610f4b816109d1565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610f7b610f4f565b90565b34610fae57610f8e36600461049f565b610faa610f99610f73565b610fa16103e4565b91829182610a4b565b0390f35b6103ea565b34610fe357610fc336600461049f565b610fdf610fce6124be565b610fd66103e4565b91829182610a4b565b0390f35b6103ea565b90565b610fff610ffa61100492610fe8565b6105de565b6107d8565b90565b6110126130d4610feb565b90565b61101d611007565b90565b346110505761103036600461049f565b61104c61103b611015565b6110436103e4565b918291826108fa565b0390f35b6103ea565b346110855761106536600461049f565b6110816110706124f2565b6110786103e4565b91829182610455565b0390f35b6103ea565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6110b661108a565b90565b346110e9576110c936600461049f565b6110e56110d46110ae565b6110dc6103e4565b91829182610a4b565b0390f35b6103ea565b3461111e5761111a611109611104366004610c02565b612514565b6111116103e4565b9182918261050a565b0390f35b6103ea565b346111545761115061113f611139366004610d4f565b90612533565b6111476103e4565b9182918261050a565b0390f35b6103ea565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b611185611159565b90565b346111b85761119836600461049f565b6111b46111a361117d565b6111ab6103e4565b91829182610a4b565b0390f35b6103ea565b60ff1690565b6111d39060086111d893026104ae565b6111bd565b90565b906111e691546111c3565b90565b6111f560055f906111db565b90565b346112285761120836600461049f565b6112246112136111e9565b61121b6103e4565b91829182610455565b0390f35b6103ea565b90565b61124461123f6112499261122d565b6105de565b6104f2565b90565b611258624f1a00611230565b90565b61126361124c565b90565b346112965761127636600461049f565b61129261128161125b565b6112896103e4565b9182918261050a565b0390f35b6103ea565b90565b6112b26112ad6112b79261129b565b6105de565b6107ec565b90565b6112c76305f5e10061129e565b90565b6112d26112ba565b90565b34611305576112e536600461049f565b6113016112f06112ca565b6112f86103e4565b91829182610c53565b0390f35b6103ea565b6113145f806104d5565b90565b346113475761132736600461049f565b61134361133261130a565b61133a6103e4565b9182918261050a565b0390f35b6103ea565b6113559061055f565b9052565b919061136c905f6020850194019061134c565b565b3461139e5761139a611389611384366004610c02565b6125a1565b6113916103e4565b91829182611359565b0390f35b6103ea565b346113d3576113cf6113be6113b9366004610425565b6125c0565b6113c66103e4565b91829182611359565b0390f35b6103ea565b34611409576114056113f46113ee366004610a95565b906125eb565b6113fc6103e4565b91829182610455565b0390f35b6103ea565b3461143e5761143a611429611424366004610c02565b61261d565b6114316103e4565b9182918261050a565b0390f35b6103ea565b90916060828403126114785761147561145e845f850161057f565b9361146c81602086016105a2565b9360400161057f565b90565b6103ee565b346114ae576114aa611499611493366004611443565b91612871565b6114a16103e4565b91829182610c53565b0390f35b6103ea565b6114c9906114c46056915f92610d92565b6104d5565b90565b346114fc576114f86114e76114e2366004610c02565b6114b3565b6114ef6103e4565b9182918261050a565b0390f35b6103ea565b61151a61151f926115156057935f94610d7c565b610d92565b6104d5565b90565b346115535761154f61153e611538366004610d4f565b90611501565b6115466103e4565b9182918261050a565b0390f35b6103ea565b90565b61156f61156a61157492611558565b6105de565b6104f2565b90565b61158362278d0061155b565b90565b61158e611577565b90565b346115c1576115a136600461049f565b6115bd6115ac611586565b6115b46103e4565b9182918261050a565b0390f35b6103ea565b90565b5f1b90565b6115e26115dd6115e7926115c6565b6115c9565b6107c8565b90565b6115f35f6115ce565b90565b6115fe6115ea565b90565b346116315761161136600461049f565b61162d61161c6115f6565b6116246103e4565b91829182610a4b565b0390f35b6103ea565b61163f906104f2565b9052565b61164c906107c8565b9052565b611659906107d8565b9052565b611666906107ec565b9052565b906101008061170b936116835f8201515f860190611636565b61169560208201516020860190611636565b6116a760408201516040860190611636565b6116b960608201516060860190611643565b6116cb60808201516080860190611650565b6116dd60a082015160a086019061165d565b6116ef60c082015160c086019061165d565b61170160e082015160e086019061165d565b0151910190611643565b565b9190611721905f610120850194019061166a565b565b346117545761175061173f6117393660046105b1565b90612a1f565b6117476103e4565b9182918261170d565b0390f35b6103ea565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b611785611759565b90565b346117b85761179836600461049f565b6117b46117a361177d565b6117ab6103e4565b91829182610a4b565b0390f35b6103ea565b90565b6117d46117cf6117d9926117bd565b6105de565b6107d8565b90565b6117e76138a46117c0565b90565b6117f26117dc565b90565b346118255761180536600461049f565b6118216118106117ea565b6118186103e4565b918291826108fa565b0390f35b6103ea565b90565b61184161183c6118469261182a565b6105de565b6107ec565b90565b61185a670de0b6b3a764000061182d565b90565b611865611849565b90565b346118985761187836600461049f565b61189461188361185d565b61188b6103e4565b91829182610c53565b0390f35b6103ea565b60018060401b0381116118b9576118b5602091610e03565b0190565b610e0d565b906118d06118cb8361189d565b610e48565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61190660056118be565b90611913602083016118d5565b565b61191d6118fc565b90565b611928611915565b90565b611933611920565b90565b5190565b60209181520190565b90825f9392825e0152565b61196d61197660209361197b9361196481611936565b9384809361193a565b95869101611943565b610e03565b0190565b6119949160208201915f81840391015261194e565b90565b346119c7576119a736600461049f565b6119c36119b261192b565b6119ba6103e4565b9182918261197f565b0390f35b6103ea565b6119d860075f906111db565b90565b34611a0b576119eb36600461049f565b611a076119f66119cc565b6119fe6103e4565b91829182610455565b0390f35b6103ea565b90565b611a27611a22611a2c92611a10565b6105de565b6107d8565b90565b611a3a614e20611a13565b90565b611a45611a2f565b90565b34611a7857611a5836600461049f565b611a74611a63611a3d565b611a6b6103e4565b918291826108fa565b0390f35b6103ea565b90565b611a94611a8f611a9992611a7d565b6105de565b6107ec565b90565b611aa66001611a80565b90565b611ab1611a9c565b90565b34611ae457611ac436600461049f565b611ae0611acf611aa9565b611ad76103e4565b91829182610c53565b0390f35b6103ea565b611af55f6018906104d5565b90565b34611b2857611b0836600461049f565b611b24611b13611ae9565b611b1b6103e4565b9182918261050a565b0390f35b6103ea565b90602080611b4f93611b455f8201515f86019061165d565b015191019061165d565b565b9190611b64905f60408501940190611b2d565b565b34611b9757611b93611b82611b7c366004610d4f565b90612af6565b611b8a6103e4565b91829182611b51565b0390f35b6103ea565b34611bcd57611bc9611bb8611bb2366004610d4f565b90612b1e565b611bc06103e4565b9182918261050a565b0390f35b6103ea565b611bdb816107ec565b03611be257565b5f80fd5b90503590611bf382611bd2565b565b611bfe816107d8565b03611c0557565b5f80fd5b90503590611c1682611bf5565b565b608081830312611c5957611c2e825f830161057f565b92611c56611c3f8460208501611be6565b93611c4d8160408601611be6565b93606001611c09565b90565b6103ee565b34611c9057611c7a611c71366004611c18565b9291909161330c565b611c826103e4565b80611c8c816109d1565b0390f35b6103ea565b90565b611cac611ca7611cb192611c95565b6105de565b6104f2565b90565b611cc06276a700611c98565b90565b611ccb611cb4565b90565b34611cfe57611cde36600461049f565b611cfa611ce9611cc3565b611cf16103e4565b9182918261050a565b0390f35b6103ea565b90565b611d1a611d15611d1f92611d03565b6105de565b6104f2565b90565b611d2e62127500611d06565b90565b611d39611d22565b90565b34611d6c57611d4c36600461049f565b611d68611d57611d31565b611d5f6103e4565b9182918261050a565b0390f35b6103ea565b34611da057611d8a611d84366004610a95565b90613344565b611d926103e4565b80611d9c816109d1565b0390f35b6103ea565b611db160015f906104d5565b90565b34611de457611dc436600461049f565b611de0611dcf611da5565b611dd76103e4565b9182918261050a565b0390f35b6103ea565b90565b611e00611dfb611e0592611de9565b6105de565b6107ec565b90565b611e18662386f26fc10000611dec565b90565b611e23611e08565b90565b34611e5657611e3636600461049f565b611e52611e41611e1b565b611e496103e4565b91829182610c53565b0390f35b6103ea565b90602082820312611e8a575f82013560018060401b038111611e8557611e819201610950565b9091565b6103f2565b6103ee565b34611ebe57611ea8611ea2366004611e5b565b906133a5565b611eb06103e4565b80611eba816109d1565b0390f35b6103ea565b611ed7611ed2611edc92610c9d565b6105de565b6107ec565b90565b611eea612710611ec3565b90565b611ef5611edf565b90565b34611f2857611f0836600461049f565b611f24611f13611eed565b611f1b6103e4565b91829182610c53565b0390f35b6103ea565b34611f5c57611f46611f403660046105b1565b906134d6565b611f4e6103e4565b80611f58816109d1565b0390f35b6103ea565b90565b611f78611f73611f7d92611f61565b6105de565b6104f2565b90565b611f8c62ed4e00611f64565b90565b611f97611f80565b90565b34611fca57611faa36600461049f565b611fc6611fb5611f8f565b611fbd6103e4565b9182918261050a565b0390f35b6103ea565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390565b611ffb611fcf565b90565b3461202e5761200e36600461049f565b61202a612019611ff3565b6120216103e4565b91829182610a4b565b0390f35b6103ea565b61203f5f6008906104d5565b90565b346120725761205236600461049f565b61206e61205d612033565b6120656103e4565b9182918261050a565b0390f35b6103ea565b5f90565b612083612077565b508061209e612098637965db0b60e01b6103f6565b916103f6565b149081156120ab575b5090565b6120b591506134e7565b5f6120a7565b60018060401b0381116120d15760208091020190565b610e0d565b909291926120eb6120e6826120bb565b610e48565b938185526020808601920283019281841161212857915b83831061210f5750505050565b6020809161211d8486610416565b815201920191612102565b61094c565b6121389136916120d6565b90565b612157926121519161214b61351f565b9261212d565b9061355a565b565b5f90565b612166906107c8565b90565b906121739061215d565b5f5260205260405f2090565b60016121a06121a692612190612159565b505f61219a6136ce565b01612169565b016106e8565b90565b906121c4916121bf6121ba8261217f565b6136f2565b6121c6565b565b906121d091613706565b50565b906121dd916121a9565b565b90806121fa6121f46121ef6137bd565b61055f565b9161055f565b0361220b57612208916137ca565b50565b5f63334bd91960e11b815280612223600482016109d1565b0390fd5b612230906105e1565b90565b61223c90612227565b90565b612248906105fd565b90565b60e01b90565b9050519061225e82610402565b565b90929192612275612270826120bb565b610e48565b93818552602080860192028301928184116122b257915b8383106122995750505050565b602080916122a78486612251565b81520192019161228c565b61094c565b9080601f830112156122d5578160206122d293519101612260565b90565b610944565b90602082820312612308575f82015160018060401b0381116123035761230092016122b7565b90565b6103f2565b6103ee565b6123156103e4565b3d5f823e3d90fd5b61232561351f565b6123505f61233a61233584612233565b61223f565b636e25b978906123486103e4565b93849261224b565b82528180612360600482016109d1565b03915afa80156123e05761237c915f916123be575b508261355a565b6123a67f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d91610609565b906123af6103e4565b806123b9816109d1565b0390a2565b6123da91503d805f833e6123d28183610e21565b8101906122da565b5f612375565b61230d565b5f90565b906123f390610609565b5f5260205260405f2090565b61241661241b9161240e6123e5565b5060196123e9565b610734565b90565b906124309161242b613883565b612432565b565b90612445916124408161393d565b613999565b565b906124519161241e565b565b6124649061245f613a97565b6124b2565b90565b90565b61247e61247961248392612467565b6115c9565b6107c8565b90565b6124af7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61246a565b90565b506124bb612486565b90565b6124ce6124c9612159565b612453565b90565b6124dd6124e29161065d565b6111bd565b90565b6124ef90546124d1565b90565b6124fa612077565b5061250d5f612507613af5565b016124e5565b90565b5f90565b61252b61253091612523612510565b506056610d92565b610676565b90565b6125589161254e61255392612546612510565b506057610d7c565b610d92565b610676565b90565b5f90565b9061256990610609565b5f5260205260405f2090565b60018060a01b031690565b61258c6125919161065d565b612575565b90565b61259e9054612580565b90565b6125b86125bd916125b061255b565b50600661255f565b612594565b90565b6125d2906125cc61255b565b50613b2f565b90565b906125df90610609565b5f5260205260405f2090565b61261a915f61260f612615936125ff612077565b50826126096136ce565b01612169565b016125d5565b6124e5565b90565b6126346126399161262c612510565b506021610d92565b610676565b90565b90612646906104f2565b9052565b90612654906107c8565b9052565b90612662906107d8565b9052565b90612670906107ec565b9052565b61267f610120610e48565b90565b906127606127566006612693612674565b946126aa6126a25f8301610676565b5f880161263c565b6126c16126b85f830161069d565b6020880161263c565b6126d86126cf5f83016106c4565b6040880161263c565b6126f06126e7600183016106e8565b6060880161264a565b6127086126ff60028301610710565b60808801612658565b61272061271760038301610734565b60a08801612666565b61273861272f60048301610734565b60c08801612666565b61275061274760058301610734565b60e08801612666565b016106e8565b610100840161264a565b565b61276b90612682565b90565b61277890516104f2565b90565b61278f61278a612794926115c6565b6105de565b6104f2565b90565b6127ab6127a66127b0926115c6565b6105de565b6107ec565b90565b6127bd90516107c8565b90565b6127ca90516107ec565b90565b634e487b7160e01b5f52601160045260245ffd5b6127f06127f6919392936107ec565b926107ec565b820391821161280157565b6127cd565b61281561281b919392936107ec565b926107ec565b916128278382026107ec565b92818404149015171561283657565b6127cd565b634e487b7160e01b5f52601260045260245ffd5b61285b612861916107ec565b916107ec565b90811561286c570490565b61283b565b9291909261289a6128956128836123e5565b9561289060558590610615565b610647565b612762565b916128a65f840161276e565b6128b86128b25f61277b565b916104f2565b1461297957906128d591906128cf606085016127b3565b91613c63565b90816128e96128e35f612797565b916107ec565b14612969576128fa60c082016127c0565b61291761291161290c60e085016127c0565b6107ec565b916107ec565b11612921575b5050565b6129619293509061294d8261294760e061294060c061295397016127c0565b92016127c0565b906127e1565b90612806565b61295b611849565b9061284f565b905f8061291d565b505090506129765f612797565b90565b50505090506129875f612797565b90565b5f90565b5f90565b5f90565b5f90565b6129a2612674565b90602080808080808080808a6129b661298a565b8152016129c161298a565b8152016129cc61298a565b8152016129d761298e565b8152016129e2612992565b8152016129ed612996565b8152016129f8612996565b815201612a03612996565b815201612a0e61298e565b81525050565b612a1c61299a565b90565b612a4491612a3a612a3f92612a32612a14565b506055610615565b610647565b612762565b90565b612a516040610e48565b90565b612a5c612a47565b9060208083612a69612996565b815201612a74612996565b81525050565b612a82612a54565b90565b90612a8f9061062b565b5f5260205260405f2090565b90612aa590610609565b5f5260205260405f2090565b90612ae8612adf6001612ac2612a47565b94612ad9612ad15f8301610734565b5f8801612666565b01610734565b60208401612666565b565b612af390612ab1565b90565b612b1b91612b11612b1692612b09612a7a565b506010612a85565b612a9b565b612aea565b90565b612b4391612b39612b3e92612b31612510565b506058610d7c565b610d92565b610676565b90565b612b52612b5791610683565b6111bd565b90565b612b649054612b46565b90565b612b7b612b76612b8092611a7d565b6105de565b6104f2565b90565b612b8c906105fd565b90565b90612ba060018060401b03916115c9565b9181191691161790565b90565b90612bc2612bbd612bc99261062b565b612baa565b8254612b8f565b9055565b60401b90565b90612be260ff60401b91612bcd565b9181191691161790565b612bf590610443565b90565b90565b90612c10612c0b612c1792612bec565b612bf8565b8254612bd3565b9055565b612c2490612b67565b9052565b9190612c3b905f60208501940190612c1b565b565b909192612c48613d52565b93612c5d612c575f8701612b5a565b15610443565b93612c695f8701610676565b80612c7c612c765f61277b565b916104f2565b1480612d96575b90612c97612c916001612b67565b916104f2565b1480612d6e575b612ca9909115610443565b9081612d5d575b50612d4157612cd993612cce612cc66001612b67565b5f8901612bad565b85612d2f575b61314e565b612ce1575b50565b612cee905f809101612bfb565b6001612d267fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d1d6103e4565b91829182612c28565b0390a15f612cde565b612d3c60015f8901612bfb565b612cd4565b5f63f92ee8a960e01b815280612d59600482016109d1565b0390fd5b612d68915015610443565b5f612cb0565b50612ca9612d7b30612b83565b3b612d8e612d885f612797565b916107ec565b149050612c9e565b5085612c83565b612db1612dac612db6926115c6565b6105de565b610554565b90565b612dc290612d9d565b90565b612dcf6040610e48565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612df057565b612dd2565b90612dff82612de6565b565b90612e0b90612df5565b9052565b90612e199061055f565b9052565b612e31612e2c612e36926107ec565b6105de565b6107d8565b90565b612e4360c0610e48565b90565b90612e5090610443565b9052565b90612e5e9061215d565b5f5260205260405f2090565b612e749051610443565b90565b90612e8360ff916115c9565b9181191691161790565b90612ea2612e9d612ea992612bec565b612bf8565b8254612e77565b9055565b90612eb95f19916115c9565b9181191691161790565b612ed7612ed2612edc926107ec565b6105de565b6107ec565b90565b90565b90612ef7612ef2612efe92612ec3565b612edf565b8254612ead565b9055565b612f0c90516107d8565b90565b90612f1c61ffff916115c9565b9181191691161790565b612f3a612f35612f3f926107d8565b6105de565b6107d8565b90565b90565b90612f5a612f55612f6192612f26565b612f42565b8254612f0f565b9055565b90612ff460a06005612ffa94612f885f8201612f825f8801612e6a565b90612e8d565b612fa160018201612f9b602088016127c0565b90612ee2565b612fba60028201612fb4604088016127c0565b90612ee2565b612fd360038201612fcd606088016127c0565b90612ee2565b612fec60048201612fe6608088016127c0565b90612ee2565b019201612f02565b90612f45565b565b9061300691612f65565b565b60801b90565b9061301e61ffff60801b91613008565b9181191691161790565b9061303d61303861304492612f26565b612f42565b825461300e565b9055565b90565b61305f61305a61306492613048565b6105de565b6104f2565b90565b61307261546061304b565b90565b9061308a600160401b600160801b0391612bcd565b9181191691161790565b906130a96130a46130b09261062b565b612baa565b8254613075565b9055565b90565b6130cb6130c66130d0926130b4565b6105de565b6104f2565b90565b6130dd601c6130b7565b90565b60c01b90565b906130f860018060c01b0319916130e0565b9181191691161790565b9061311761311261311e9261062b565b612baa565b82546130e6565b9055565b90565b61313961313461313e92613122565b6105de565b6104f2565b90565b61314b6038613125565b90565b919091613159613d80565b613161613d94565b613169613dba565b613171613de0565b6131796115ea565b8161318391613706565b5061318c611159565b8161319691613706565b5061319f611759565b816131a991613706565b506131b2611fcf565b906131bc91613706565b505f806131c890612db9565b6131d0612dc5565b915f8301906131de91612e01565b60208201906131ec91612e0f565b6131f590613e4a565b90600192905f8091613205611edf565b61320e90612e1d565b93613217612e39565b965f88019061322591612e46565b602087019061323391612666565b604086019061324191612666565b61324a90612797565b606085019061325891612666565b61326190612797565b608084019061326f91612666565b60a083019061327d91612658565b60029061328991612e54565b9061329391612ffc565b60016132a0906005612e8d565b6132ab906001613028565b60016132b690612b67565b6132c0905f612bad565b6132c8613067565b6132d2905f613094565b6132da6130d3565b6132e4905f613102565b6132ec6130d3565b6132f7906001612bad565b6132ff613141565b61330a906001613094565b565b90613318939291612c3d565b565b906133359161333061332b8261217f565b6136f2565b613337565b565b90613341916137ca565b50565b9061334e9161331a565b565b600161335c91016107ec565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b9190811015613387576020020190565b613363565b3561339681610402565b90565b6133a2906103f6565b90565b9190916133b061351f565b6133b95f612797565b5b806133d76133d16133cc85889061335f565b6107ec565b916107ec565b101561345b57613456906133fd6133f86133f385888591613377565b61338c565b613f11565b61341161340c84878491613377565b61338c565b61343b7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb91613399565b906134446103e4565b8061344e816109d1565b0390a2613350565b6133ba565b50509050565b9061347b91613476613471611159565b6136f2565b61347d565b565b6134928261348d60218490610d92565b612bad565b6134d16134bf7f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f3592610609565b926134c86103e4565b9182918261050a565b0390a2565b906134e091613461565b565b613f27565b6134ef612077565b506135096135036301ffc9a760e01b6103f6565b916103f6565b1490565b61351d613518611fcf565b6136f2565b565b61352761350d565b565b5190565b9061353782613529565b811015613548576020809102010190565b613363565b61355790516103f6565b90565b91908261357761357161356c5f612db9565b61055f565b9161055f565b146136c957823b61359061358a5f612797565b916107ec565b146136c35761359e5f612797565b5b806135ba6135b46135af85613529565b6107ec565b916107ec565b10156136bd576135db6135d66135d184849061352d565b61354d565b613b2f565b806135f66135f06135eb5f612db9565b61055f565b9161055f565b1415806136a2575b61368b57506136869061362461361d61361885849061352d565b61354d565b869061402e565b61363761363284839061352d565b61354d565b8561366b6136657f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b3993613399565b91610609565b916136746103e4565b8061367e816109d1565b0390a3613350565b61359f565b61369d613698838561352d565b61354d565b613fd5565b50806136b66136b08761055f565b9161055f565b14156135fe565b50509050565b82613f86565b613f6a565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613704906136fe6137bd565b90614067565b565b61370e612077565b506137176136ce565b61372b6137258385906125eb565b15610443565b5f146137b657613755906137505f61374881600194018690612169565b0185906125d5565b612e8d565b9061375e6137bd565b9061379b61379561378f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9561215d565b92610609565b92610609565b926137a46103e4565b806137ae816109d1565b0390a4600190565b5050505f90565b6137c561255b565b503390565b6137d2612077565b506137db6136ce565b6137e68284906125eb565b5f146138705761380f9061380a5f613802818094018690612169565b0185906125d5565b612e8d565b906138186137bd565b9061385561384f6138497ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9561215d565b92610609565b92610609565b9261385e6103e4565b80613868816109d1565b0390a4600190565b5050505f90565b613880906105fd565b90565b61388c30613877565b6138be6138b87f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b1480156138e8575b6138cc57565b5f63703e46dd60e11b8152806138e4600482016109d1565b0390fd5b506138f16140a2565b61392361391d7f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b14156138c6565b5061393b613936611fcf565b6136f2565b565b6139469061392a565b565b613951906105e1565b90565b61395d90613948565b90565b613969906105fd565b90565b9050519061397982610a0a565b565b9060208282031261399457613991915f0161396c565b90565b6103ee565b91906139c760206139b16139ac86613954565b613960565b6352d1902d906139bf6103e4565b93849261224b565b825281806139d7600482016109d1565b03915afa80915f92613a67575b50155f14613a185750509060016139f957505b565b613a14905f918291634c9c8ce360e01b835260048301611359565b0390fd5b9283613a33613a2d613a28612486565b6107c8565b916107c8565b03613a4857613a439293506140c8565b6139f7565b613a63845f918291632a87526960e21b835260048301610a4b565b0390fd5b613a8991925060203d8111613a90575b613a818183610e21565b81019061397b565b905f6139e4565b503d613a77565b613aa030613877565b613ad2613acc7f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b03613ad957565b5f63703e46dd60e11b815280613af1600482016109d1565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b2390613399565b5f5260205260405f2090565b613b46613b4b91613b3e61255b565b50601f613b19565b612594565b90565b90613b5890610609565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b7d81613b67565b821015613b9757613b8f600491613b6b565b910201905f90565b613363565b90565b60ff1690565b613bb1613bb69161065d565b613b9f565b90565b613bc39054613ba5565b90565b60081c90565b613bd8613bdd91613bc6565b612575565b90565b613bea9054613bcc565b90565b613bf76040610e48565b90565b90613c30613c275f613c0a613bed565b94613c21613c19838301613bb9565b838801612e01565b01613be0565b60208401612e0f565b565b613c3b90613bfa565b90565b613c4d613c53919392936107ec565b926107ec565b8201809211613c5e57565b6127cd565b929192613c81613c7c613c746123e5565b926014613b4e565b613b64565b93613c8b85613b67565b93613c955f612797565b5b80613ca9613ca3886107ec565b916107ec565b1015613d4957613cc3613cbd888390613b74565b50613b9c565b613cce5f8201612594565b613ce0613cda8861055f565b9161055f565b1480613d1c575b613cfb575b50613cf690613350565b613c96565b613cf69194613d0f6001613d159301610734565b90613c3e565b9390613cec565b50613d31613d2c60028301613c32565b613e4a565b613d43613d3d866107c8565b916107c8565b14613ce7565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d7e614151565b565b613d88613d76565b565b613d92614151565b565b613d9c613d8a565b565b613da6614151565b613dae613db0565b565b613db86141ac565b565b613dc2613d9e565b565b613dcc614151565b613dd4613dd6565b565b613dde6141f2565b565b613de8613dc4565b565b613df49051612df5565b90565b613e01905161055f565b90565b613e0d90612df5565b90565b613e1990613e04565b9052565b916020613e3e929493613e3760408201965f830190613e10565b019061134c565b565b60200190565b5190565b613e52612159565b50613e94613e6d6020613e665f8501613dea565b9301613df7565b91613e85613e796103e4565b93849260208401613e1d565b60208201810382520382610e21565b613ea6613ea082613e46565b91613e40565b2090565b1b90565b91906008613ece910291613ec860018060a01b0384613eaa565b92613eaa565b9181191691161790565b90565b9190613ef1613eec613ef993610609565b613ed8565b908354613eae565b9055565b613f0f91613f0961255b565b91613edb565b565b5f613f20613f2592601f613b19565b613efd565b565b613f3a63ffffffff60e01b5f3516613b2f565b80613f55613f4f613f4a5f612db9565b61055f565b9161055f565b036142305763ffffffff60e01b5f3516614211565b5f63d92e233d60e01b815280613f82600482016109d1565b0390fd5b613fa1905f9182916322a2d07b60e21b835260048301611359565b0390fd5b613fae906103f6565b9052565b916020613fd3929493613fcc60408201965f830190613fa5565b019061134c565b565b613fef5f9283926310ae11a960e31b845260048401613fb2565b0390fd5b9061400460018060a01b03916115c9565b9181191691161790565b9061402361401e61402a92610609565b613ed8565b8254613ff3565b9055565b61403d6140429291601f613b19565b61400e565b565b91602061406592949361405e60408201965f83019061134c565b01906107cb565b565b9061407c6140768383906125eb565b15610443565b614084575050565b61409e5f92839263e2517d3f60e01b845260048401614044565b0390fd5b6140aa61255b565b506140c55f6140bf6140ba612486565b61424e565b01612594565b90565b906140d282614251565b816140fd7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610609565b906141066103e4565b80614110816109d1565b0390a261411c81613e46565b61412e6141285f612797565b916107ec565b115f146141425761413e91614321565b505b565b505061414c6142a6565b614140565b61416261415c614350565b15610443565b61416857565b5f631afcd79f60e31b815280614180600482016109d1565b0390fd5b61418c614151565b614194614196565b565b6141aa6141a1613af5565b5f809101612e8d565b565b6141b4614184565b565b6141be614151565b6141c66141d5565b565b6141d26001611a80565b90565b6141f06141e061436e565b5f6141e96141c8565b9101612ee2565b565b6141fa6141b6565b565b919061420f905f60208501940190613fa5565b565b61422c905f91829163c2a825f560e01b8352600483016141fc565b0390fd5b5f8091368280378136915af43d5f803e5f1461424a573d5ff35b3d5ffd5b90565b803b61426561425f5f612797565b916107ec565b1461428757614285905f61427f61427a612486565b61424e565b0161400e565b565b6142a2905f918291634c9c8ce360e01b835260048301611359565b0390fd5b346142b96142b35f612797565b916107ec565b116142c057565b5f63b398979f60e01b8152806142d8600482016109d1565b0390fd5b606090565b906142f36142ee83610e5d565b610e48565b918252565b3d5f14614313576143083d6142e1565b903d5f602084013e5b565b61431b6142dc565b90614311565b5f8061434d9361432f6142dc565b508390602081019051915af4906143446142f8565b90919091614392565b90565b614358612077565b5061436b5f614365613d52565b01612b5a565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143a69061439f6142dc565b5015610443565b5f146143b25750614416565b6143bb82613e46565b6143cd6143c75f612797565b916107ec565b14806143fb575b6143dc575090565b6143f7905f918291639996b31560e01b835260048301611359565b0390fd5b50803b61441061440a5f612797565b916107ec565b146143d4565b61441f81613e46565b61443161442b5f612797565b916107ec565b115f1461444057805190602001fd5b5f63d6bda27560e01b815280614458600482016109d1565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:4613:56:-:0;;;;;;;;;-1:-1:-1;1033:4613:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4836:30:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4797:70:60:-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;1033:4613:56:-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2390:52:54:-;2436:6;;;:::i;:::-;2390:52;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;6202:35:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2568:53:54:-;2615:6;;;:::i;:::-;2568:53;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2337:47:54:-;2378:6;;;:::i;:::-;2337:47;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5611:33:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;5194:72:60:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;3819:64:54;3858:25;3819:64;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2448:53:54:-;2495:6;;;:::i;:::-;2448:53;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3971:62:54:-;4009:24;3971:62;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3753:60:54:-;3790:23;3753:60;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;7722:25:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1742:48:54:-;1783:7;;;:::i;:::-;1742:48;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1557:44:54:-;1598:3;;;:::i;:::-;1557:44;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4640:26:54:-;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4917:45:60:-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5041:70:60:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1689:47:54:-;1729:7;;;:::i;:::-;1689:47;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2317:49:22:-;2362:4;;;:::i;:::-;2317:49;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3889:76:54:-;3934:31;3889:76;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2507:55:54:-;2556:6;;;:::i;:::-;2507:55;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1059:40:54:-;1095:4;;;:::i;:::-;1059:40;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:24:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8602:27:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2980:57:54:-;3031:6;;;:::i;:::-;2980:57;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1607:42:54:-;1648:1;;;:::i;:::-;1607:42;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5414:37:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1796:50:54:-;1839:7;;;:::i;:::-;1796:50;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6641:56:54:-;6690:7;;;:::i;:::-;6641:56;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;5518:34:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;3220:46:54:-;3262:4;;;:::i;:::-;3220:46;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1105:48:54:-;1147:6;;;:::i;:::-;1105:48;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1852:49:54:-;1893:8;;;:::i;:::-;1852:49;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4039:66:54:-;4079:26;4039:66;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4743:27:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;3443:202:22:-;3528:4;;:::i;:::-;3551:11;;:47;;3566:32;;;3551:47;:::i;:::-;;;:::i;:::-;;:87;;;;;3443:202;3544:94;;:::o;3551:87::-;3602:36;3626:11;;3602:36;:::i;:::-;3551:87;;;1033:4613:56;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;986:179:30:-;1122:36;986:179;1122:36;986:179;;;:::i;:::-;1148:9;1122:36;:::i;:::-;;;:::i;:::-;986:179::o;1033:4613:56:-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4759:191:22:-;4919:24;:14;:24;4759:191;4824:7;;:::i;:::-;4876:26;4919:8;4876:26;;:::i;:::-;4919:8;:14;:::i;:::-;:24;;:::i;:::-;4912:31;:::o;3149:76::-;;3217:1;3149:76;3202:4;5320:18;5333:4;5320:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5246:136::-;;5350:25;5246:136;5350:25;:::i;:::-;;5246:136::o;:::-;;;;;:::i;:::-;:::o;6348:245::-;;6441:18;:34;;6463:12;;:::i;:::-;6441:34;:::i;:::-;;;:::i;:::-;;6437:102;;6549:37;6561:4;6549:37;:::i;:::-;;6348:245::o;6437:102::-;6498:30;;;;;;;;;;;;:::i;:::-;;;;1033:4613:56;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;668:256:30;;;:::i;:::-;797:34;;:32;:22;813:5;797:22;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;867:12;797:34;;;;;668:256;766:65;860:5;867:12;:::i;:::-;895:22;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;668:256::o;797:34::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1033:4613:56:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;12525:122:59:-;12617:23;;12525:122;12591:7;;:::i;:::-;12617:16;;:23;:::i;:::-;;:::i;:::-;12610:30;:::o;2624:62:24:-;;2678:1;2624:62;;;:::i;:::-;2678:1;:::i;:::-;2624:62::o;4161:214::-;;4363:4;4161:214;4294:17;;;:::i;:::-;4363:4;:::i;:::-;4161:214::o;:::-;;;;;:::i;:::-;:::o;2892:72::-;2956:1;2892:72;;;:::i;:::-;2956:1;:::i;:::-;2892:72;:::o;1033:4613:56:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;763:114:8:-;811:66;;;:::i;:::-;763:114;:::o;3708:134:24:-;3803:32;;;:::i;:::-;3796:39;:::o;3708:134::-;3777:7;;;:::i;:::-;;:::i;:::-;3708:134;:::o;1033:4613:56:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:26:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;1033:4613:56:-;;;:::o;30689:117:60:-;30778:21;;30689:117;30753:6;;:::i;:::-;30778:11;;:21;:::i;:::-;;:::i;:::-;30771:28;:::o;31245:162::-;31362:38;31245:162;31362:28;:38;31245:162;31337:6;;:::i;:::-;31362:17;;:28;:::i;:::-;:38;:::i;:::-;;:::i;:::-;31355:45;:::o;1033:4613:56:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;16785:117:55:-;16874:21;;16785:117;16848:7;;:::i;:::-;16874:14;;:21;:::i;:::-;;:::i;:::-;16867:28;:::o;1560:129:30:-;1652:30;1560:129;1626:7;;:::i;:::-;1673:8;1652:30;:::i;:::-;1645:37;:::o;1033:4613:56:-;;;;;:::i;:::-;;;;;;;;;:::o;3732:207:22:-;3901:31;3732:207;3901:22;:14;:31;3732:207;3809:4;;:::i;:::-;3858:26;;;;:::i;:::-;3901:8;:14;:::i;:::-;:22;:31;:::i;:::-;;:::i;:::-;3894:38;:::o;7400:147:60:-;7504:36;;7400:147;7479:6;;:::i;:::-;7504:26;;:36;:::i;:::-;;:::i;:::-;7497:43;:::o;1033:4613:56:-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29177:783:60:-;;;;;29365:59;29393:31;29331:18;;:::i;:::-;29393:12;:22;:12;29406:8;29393:22;;:::i;:::-;:31;:::i;:::-;29365:59;:::i;:::-;29438:6;:12;;:6;:12;;:::i;:::-;:17;;29454:1;29438:17;:::i;:::-;;;:::i;:::-;;29434:31;;29561:9;29525:74;29561:9;29572:8;29582:16;;:6;:16;;:::i;:::-;29525:74;;:::i;:::-;29613:15;;:20;;29632:1;29613:20;:::i;:::-;;;:::i;:::-;;29609:34;;29737:25;;:6;:25;;:::i;:::-;:52;;29765:24;;:6;:24;;:::i;:::-;29737:52;:::i;:::-;;;:::i;:::-;;29733:221;;29177:783;;;:::o;29733:221::-;29903:40;29824:6;;;;:52;:6;29852:24;;29824:25;;29904:26;29824:6;:25;;:::i;:::-;29852:6;:24;;:::i;:::-;29824:52;;:::i;:::-;29904:26;;:::i;:::-;29934:9;;:::i;:::-;29903:40;;:::i;:::-;29733:221;;;;;29609:34;29642:1;;;;29635:8;29642:1;29635:8;:::i;:::-;;:::o;29434:31::-;29464:1;;;;;29457:8;29464:1;29457:8;:::i;:::-;;:::o;1033:4613:56:-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;30853:156:60:-;30964:38;30853:156;30971:22;:31;30853:156;30934:18;;:::i;:::-;30971:12;;:22;:::i;:::-;:31;:::i;:::-;30964:38;:::i;:::-;;:::o;1033:4613:56:-;;;;:::i;:::-;;:::o;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;33798:154:60:-;33913:32;33798:154;33920:15;:25;33798:154;33872:29;;:::i;:::-;33920:8;;:15;:::i;:::-;:25;:::i;:::-;33913:32;:::i;:::-;;:::o;31663:170::-;31784:42;31663:170;31784:32;:42;31663:170;31759:6;;:::i;:::-;31784:19;;:32;:::i;:::-;:42;:::i;:::-;;:::i;:::-;31777:49;:::o;1033:4613:56:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:23:-;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1033:4613:56;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1033:4613:56;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;826:56:29:-;876:6;;;:::i;:::-;826:56;:::o;876:6::-;;;1033:4613:56;876:6:29;;1033:4613:56;876:6:29;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;954:52::-;1004:2;;;:::i;:::-;954:52;:::o;1004:2::-;;;;:::o;:::-;;;1033:4613:56;1004:2:29;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1074:51::-;1123:2;;;:::i;:::-;1074:51;:::o;1648:1495:56:-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2003:18;;:::i;:::-;2023:5;1992:37;;;:::i;:::-;;2050:10;;:::i;:::-;2062:5;2039:29;;;:::i;:::-;;2089:18;;:::i;:::-;2109:5;2078:37;;;:::i;:::-;;2136:13;;:::i;:::-;2151:5;2125:32;;;:::i;:::-;;2246:22;2278:1;2270:10;;;:::i;:::-;2234:47;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2223:59;;;:::i;:::-;2361:4;;2397:22;2448:19;2493:1;2525;2630:15;;;:::i;:::-;2623:23;;;:::i;:::-;2320:337;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2292:13;2306:10;2292:25;;;:::i;:::-;:365;;;;:::i;:::-;2683:4;2667:20;;;;:::i;:::-;2698:46;;;;:::i;:::-;2769:1;2754:16;;;:::i;:::-;;;;;:::i;:::-;2796:37;;:::i;:::-;2780:53;;;;:::i;:::-;2961:37;;:::i;:::-;2935:63;;;;:::i;:::-;3031:37;;:::i;:::-;3008:60;;;;:::i;:::-;3100:36;;:::i;:::-;3078:58;;;;:::i;:::-;1648:1495::o;:::-;;;;;;;:::i;:::-;:::o;3149:76:22:-;;3217:1;3149:76;3202:4;5737:18;5750:4;5737:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5662:138::-;;5767:26;5662:138;5767:26;:::i;:::-;;5662:138::o;:::-;;;;;:::i;:::-;:::o;1033:4613:56:-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;1220:285:30:-;;;;;;:::i;:::-;1343:13;1355:1;1343:13;:::i;:::-;1380:3;1358:1;:20;;1362:16;:9;;:16;;:::i;:::-;1358:20;:::i;:::-;;;:::i;:::-;;;;;1380:3;1422:9;:12;;;:9;;1432:1;1422:12;;:::i;:::-;;:::i;:::-;;:::i;:::-;1475;;:9;;1485:1;1475:12;;:::i;:::-;;:::i;:::-;1454:34;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1380:3;:::i;:::-;1343:13;;1358:20;;;;;1220:285::o;3149:76:22:-;;3217:1;3149:76;3202:4;5517:10:56;;:::i;:::-;3202:4:22;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5426:218:56:-;5539:44;5578:5;5539:36;:26;5566:8;5539:36;;:::i;:::-;:44;:::i;:::-;5598:39;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;5426:218::o;:::-;;;;;:::i;:::-;:::o;4702:63::-;;:::i;1035:146:28:-;1111:4;;:::i;:::-;1134:11;:40;;1149:25;;;1134:40;:::i;:::-;;;:::i;:::-;;1127:47;:::o;3149:76:22:-;3202:4;3823:13:56;;:::i;:::-;3202:4:22;:::i;:::-;3149:76::o;3750:91:56:-;;;:::i;:::-;:::o;1033:4613::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;1894:602:30:-;;;1987:5;:19;;1996:10;2004:1;1996:10;:::i;:::-;1987:19;:::i;:::-;;;:::i;:::-;;1983:45;;2042:5;:17;:22;;2063:1;2042:22;:::i;:::-;;;:::i;:::-;;2038:54;;2108:13;2120:1;2108:13;:::i;:::-;2145:3;2123:1;:20;;2127:16;:9;:16;:::i;:::-;2123:20;:::i;:::-;;;:::i;:::-;;;;;2183:34;2204:12;;:9;2214:1;2204:12;;:::i;:::-;;:::i;:::-;2183:34;:::i;:::-;2235:8;:22;;2247:10;2255:1;2247:10;:::i;:::-;2235:22;:::i;:::-;;;:::i;:::-;;;:43;;;2145:3;2231:138;;2403:9;2145:3;2403:9;2417:5;2403:12;;:9;2413:1;2403:12;;:::i;:::-;;:::i;:::-;2417:5;;;:::i;:::-;2459:12;;:9;2469:1;2459:12;;:::i;:::-;;:::i;:::-;2473:5;2442:37;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2145:3;:::i;:::-;2108:13;;2231:138;2331:12;;:9;;:12;:::i;:::-;;:::i;:::-;2345:8;:::i;2235:43::-;2261:8;;:17;;2273:5;2261:17;:::i;:::-;;;:::i;:::-;;;2235:43;;2123:20;;;;;1894:602::o;2038:54::-;2086:5;;:::i;1983:45::-;;:::i;2787:177:22:-;2887:71;2787:177;:::o;4148:103::-;4231:12;4148:103;4231:12;;:::i;:::-;;;:::i;:::-;4148:103::o;7270:387::-;7347:4;;:::i;:::-;7396:26;;;:::i;:::-;7436:23;7437:22;7445:4;7451:7;7437:22;;:::i;:::-;7436:23;;:::i;:::-;7432:219;;;;7475:38;7509:4;7475:31;:22;:14;7509:4;;7475:1;:8;7484:4;7475:14;;:::i;:::-;:22;7498:7;7475:31;;:::i;:::-;:38;:::i;:::-;7550:7;7559:12;;:::i;:::-;7532:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;7593:4;7586:11;:::o;7432:219::-;7635:5;;;;7628:12;:::o;887:96:25:-;940:7;;:::i;:::-;966:10;;959:17;:::o;7892:388:22:-;7970:4;;:::i;:::-;8019:26;;;:::i;:::-;8059:22;8067:4;8073:7;8059:22;;:::i;:::-;8055:219;;;;8097:39;8131:5;8097:31;:22;:14;8131:5;;8097:1;:8;8106:4;8097:14;;:::i;:::-;:22;8120:7;8097:31;;:::i;:::-;:39;:::i;:::-;8173:7;8182:12;;:::i;:::-;8155:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;8216:4;8209:11;:::o;8055:219::-;8258:5;;;;8251:12;:::o;1033:4613:56:-;;;;:::i;:::-;;:::o;4603:312:24:-;4675:13;4683:4;4675:13;:::i;:::-;:23;;4692:6;4675:23;:::i;:::-;;;:::i;:::-;;:120;;;;4603:312;4658:251;;4603:312::o;4658:251::-;4869:29;;;;;;;;;;;;:::i;:::-;;;;4675:120;4753:32;;;:::i;:::-;:42;;4789:6;4753:42;:::i;:::-;;;:::i;:::-;;;4675:120;;3149:76:22;;3202:4;5014:13:56;;:::i;:::-;3202:4:22;:::i;:::-;3149:76::o;4951:81:56:-;;;;:::i;:::-;:::o;1033:4613::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6057:538:24:-;;;6156:52;;:50;:36;6174:17;6156:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6057:538;6152:437;;;;;;;;;;;;;;6057:538::o;6152:437::-;6518:60;6560:17;6518:60;;;;;;;;;;;;;:::i;:::-;;;;6152:437;6250:4;;:40;;6258:32;;:::i;:::-;6250:40;:::i;:::-;;;:::i;:::-;;6246:120;;6428:4;6409:17;;;6428:4;:::i;:::-;6152:437;;6246:120;6317:34;6346:4;6317:34;;;;;;;;;;;;;:::i;:::-;;;;6156:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5032:213;5098:13;5106:4;5098:13;:::i;:::-;:23;;5115:6;5098:23;:::i;:::-;;;:::i;:::-;;5094:145;;5032:213::o;5094:145::-;5199:29;4869;;;5199;;;;;;;;:::i;:::-;;;;1147:162:26;1237:66;1147:162;:::o;1033:4613:56:-;;;;;:::i;:::-;;;;;;;;;:::o;3847:139::-;3952:27;;3847:139;3926:7;;:::i;:::-;3952:17;;:27;:::i;:::-;;:::i;:::-;3945:34;:::o;1033:4613::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29966:667:60:-;;;;30179:71;30227:23;30144:19;;:::i;:::-;30227:12;;:23;:::i;:::-;30179:71;:::i;:::-;30288:11;:18;:11;:18;:::i;:::-;30333:1;30321:13;30333:1;30321:13;:::i;:::-;;30336:1;:21;;30340:17;30336:21;:::i;:::-;;;:::i;:::-;;;;;30374:50;30410:14;:11;30422:1;30410:14;;:::i;:::-;;30374:50;:::i;:::-;30442:10;;:1;:10;;:::i;:::-;:22;;30456:8;30442:22;:::i;:::-;;;:::i;:::-;;:58;;;30321:13;30438:120;;30321:13;30599:3;;;;:::i;:::-;30321:13;;30438:120;30599:3;30535:1;;:8;;30520:23;30535:1;:8;;:::i;:::-;30520:23;;:::i;:::-;30438:120;;;;30442:58;30479:1;30468:19;;30479:7;:1;:7;30468:19;:::i;:::-;;:::i;:::-;:32;;30491:9;30468:32;:::i;:::-;;;:::i;:::-;;30442:58;;30336:21;;;;;;;;29966:667::o;8737:170:23:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2970:67:24:-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;:::o;3231:65:22:-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:26:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2684:111:27:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1033:4613:56:-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;16868:204:54:-;16937:7;;:::i;:::-;17040:5;17029:35;17052:11;;17040:10;;:5;:10;;:::i;:::-;17052:5;:11;;:::i;:::-;17029:35;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;17019:46;;;;:::i;:::-;;;:::i;:::-;;17012:53;:::o;1033:4613:56:-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;4130:118::-;4207:34;4214:27;4207:34;4130:118;4214:17;:27;:::i;:::-;4207:34;:::i;:::-;4130:118::o;1695:193:30:-;1758:29;1033:4613:56;;;1779:7:30;;;1758:29;:::i;:::-;1801:5;:19;;1810:10;1818:1;1810:10;:::i;:::-;1801:19;:::i;:::-;;;:::i;:::-;;1875:5;1797:56;1033:4613:56;;;1845:7:30;;;;:::i;4254:107:56:-;4324:30;;;;;;;;;;;;:::i;:::-;;;;4367:127;4451:36;4367:127;4451:36;;;;;;;;;;;;;:::i;:::-;;;;1033:4613;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4500:196::-;4622:67;;;;;;;;;;;;;;:::i;:::-;;;;1033:4613;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3992:132::-;4082:27;:35;3992:132;4082:17;;:27;:::i;:::-;:35;:::i;:::-;3992:132::o;1033:4613::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4381:197:22:-;;4468:23;4469:22;4477:4;4483:7;4469:22;;:::i;:::-;4468:23;;:::i;:::-;4464:108;;4381:197;;:::o;4464:108::-;4514:47;;;;;;;;;;;;;;:::i;:::-;;;;1441:138:8;1493:7;;:::i;:::-;1546:19;1519:53;;:47;1546:19;;:::i;:::-;1519:47;:::i;:::-;:53;;:::i;:::-;1512:60;:::o;2264:344::-;;2374:17;;;:::i;:::-;2425;2407:36;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2458:11;:4;:11;:::i;:::-;:15;;2472:1;2458:15;:::i;:::-;;;:::i;:::-;;2454:148;;;;2489:53;2518:17;2489:53;:::i;:::-;;2454:148;2264:344::o;2454:148::-;;;;;:::i;:::-;;;7084:141:23;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;;;;;;;;;;;:::i;:::-;;;;6893:76;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:26:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1910:40:27:-;1949:1;;;:::i;:::-;1910:40;:::o;2801:183::-;2954:23;2916:28;;:::i;:::-;2954:9;2966:11;;:::i;:::-;2954:1;:9;:23;:::i;:::-;2801:183::o;:::-;;;:::i;:::-;:::o;1033:4613:56:-;;;;;;;;;;;;;:::i;:::-;:::o;4807:138::-;4896:42;4807:138;4896:42;;;;;;;;;;;;;:::i;:::-;;;;2694:388:30;2750:326;2694:388;;2750:326;;;;;;;;;;;;;;;;;;;;;;;;1899:163:16;;:::o;1671:281:8:-;1748:17;:29;:34;;1781:1;1748:34;:::i;:::-;;;:::i;:::-;;1744:119;;1872:73;1928:17;1872:53;:47;1899:19;;:::i;:::-;1872:47;:::i;:::-;:53;:73;:::i;:::-;1671:281::o;1744:119::-;1805:47;1834:17;1805:47;6518:60:24;;;;;;1805:47:8;;;;;;:::i;:::-;;;;6113:122;6163:9;:13;;6175:1;6163:13;:::i;:::-;;;:::i;:::-;;6159:70;;6113:122::o;6159:70::-;6199:19;;;;;;;;;;;;:::i;:::-;;;;1033:4613:56;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;3900:253:12;4049:25;3900:253;4091:55;3900:253;3983:12;;:::i;:::-;4049:6;;4069:4;4049:25;;;;;;;;;;;:::i;:::-;4118:6;4126:7;4135:10;4091:55;;:::i;:::-;4084:62;:::o;8487:120:23:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;2395:183:27:-;2499:73;2395:183;:::o;4421:582:12:-;;4593:8;4421:582;4565:12;;:::i;:::-;4594:7;4593:8;;:::i;:::-;4589:408;;;;4625:10;;:::i;4589:408::-;4841:17;:10;:17;:::i;:::-;:22;;4862:1;4841:22;:::i;:::-;;;:::i;:::-;;:49;;;4589:408;4837:119;;4976:10;4969:17;:::o;4837:119::-;4917:24;4934:6;4917:24;;;;;;;;;;;;;:::i;:::-;;;;4841:49;4867:6;;:18;:23;;4889:1;4867:23;:::i;:::-;;;:::i;:::-;;4841:49;;5543:487;5674:17;:10;:17;:::i;:::-;:21;;5694:1;5674:21;:::i;:::-;;;:::i;:::-;;5670:354;;;;5799:158;;;;;;5670:354;5994:19;;;;;;;;;;;;:::i;:::-;;;","linkReferences":{},"immutableReferences":{"6698":[{"start":14484,"length":32},{"start":14585,"length":32},{"start":15016,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","ASSET_MANAGER_ROLE()":"a4b32de8","BPS_DENOMINATOR()":"e1a45218","COMMISSION_CHANGE_DELAY()":"d45ff582","DEFAULT_ADMIN_ROLE()":"a217fddf","LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MAX_REWARD_MULTIPLIER_BPS()":"b5e2a87a","MIN_LOCK_AMOUNT()":"dd764abf","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","PRECISION()":"aaf5eb68","SLASHER_ROLE()":"5095af64","TANGLE_ROLE()":"602356e3","UPGRADER_ROLE()":"f72c0d8b","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","VIRTUAL_ASSETS()":"b6608409","VIRTUAL_SHARES()":"88c47f68","blueprintSlashCount(uint64,address)":"4e9c929a","clearFacetSelectors(bytes4[])":"e07dec29","currentRound()":"8a19c8bc","delegationBondLessDelay()":"ba05bbf5","facetForSelector(bytes4)":"90837ff4","getAccumulatedDust(address)":"49147411","getAssetAdapter(address)":"8a7fe60f","getPendingSlashCount(address)":"9480e4dd","getRoleAdmin(bytes32)":"248a9ca3","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getSnapshot(uint64,address)":"c07449e2","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,uint256,uint256,uint16)":"cbb6d6bd","lastRoundAdvance()":"05d64e38","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","nativeEnabled()":"77ab2cf3","nextSlashId(address)":"96085673","operatorCommissionBps()":"32273f61","paused()":"5c975abb","proxiableUUID()":"52d1902d","registerFacet(address)":"46d163aa","registerFacetSelectors(address,bytes4[])":"19e82e61","renounceRole(bytes32,address)":"36568abe","requireAdapters()":"b54b2b9e","resetPendingSlashCount(address,uint64)":"e27e05c1","revokeRole(bytes32,address)":"d547741f","roundDuration()":"f7cb789a","serviceSlashCount(uint64,address)":"9722f4b9","slashHistory(address,uint64)":"0aa8b110","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintNotRegisteredForOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"existingFacet\",\"type\":\"address\"}],\"name\":\"SelectorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"UnknownSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDust\",\"type\":\"uint256\"}],\"name\":\"DustAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FacetSelectorCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"OperatorDelegationModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashCountReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashDecremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlashedPrincipalReconciled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BPS_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMISSION_CHANGE_DELAY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_REWARD_MULTIPLIER_BPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LOCK_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TANGLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_ASSETS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_SHARES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"blueprintSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"clearFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"facetForSelector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAccumulatedDust\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetAdapter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getPendingSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lostAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSnapshot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDelegated\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorSnapshot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_operatorCommissionBps\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRoundAdvance\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nextSlashId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"registerFacet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"registerFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requireAdapters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"resetPendingSlashCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"slashHistory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ZeroAddress()\":[{\"details\":\"Zero address provided - kept parameterless for backward compatibility Context is typically clear from the function that reverts\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"details\":\"Individual delegator amounts can be computed: shares * (oldRate - newRate) / PRECISION\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"params\":{\"assetHash\":\"Asset hash for the pool\",\"blueprintId\":\"The blueprint where violation occurred (0 for consensus/native slash)\",\"delegatorsSlashed\":\"Amount slashed from delegator pools (reduces totalAssets)\",\"exchangeRateAfter\":\"Exchange rate after slash (scaled by PRECISION)\",\"operator\":\"The slashed operator\",\"operatorSlashed\":\"Amount slashed from operator's self-stake\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"}},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"commitmentCount\":\"Number of asset commitments that were slashed\",\"operator\":\"The slashed operator\",\"serviceId\":\"The service where violation occurred\",\"totalSlashed\":\"Total amount slashed across all committed assets\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getAccumulatedDust(address)\":{\"params\":{\"token\":\"The token address (address(0) for native)\"},\"returns\":{\"_0\":\"The accumulated dust amount\"}},\"getAssetAdapter(address)\":{\"params\":{\"token\":\"Token address\"},\"returns\":{\"_0\":\"adapter Adapter address (or zero if none)\"}},\"getPendingSlashCount(address)\":{\"params\":{\"operator\":\"The operator to query\"},\"returns\":{\"_0\":\"count Number of pending slashes\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getSlashCountForBlueprint(uint64,address)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"operator\":\"The operator address\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in services of this blueprint\"}},\"getSlashCountForService(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in this service\"}},\"getSlashImpact(address,uint64,address)\":{\"params\":{\"delegator\":\"The delegator to check\",\"operator\":\"The operator that was slashed\",\"slashId\":\"The slash event ID\"},\"returns\":{\"lostAmount\":\"Approximate amount lost due to this slash\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,uint256,uint256,uint16)\":{\"params\":{\"_operatorCommissionBps\":\"Operator commission in basis points\",\"admin\":\"Admin address\",\"nativeMinDelegation\":\"Minimum delegation amount\",\"nativeMinOperatorStake\":\"Minimum stake for operators\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"resetPendingSlashCount(address,uint64)\":{\"details\":\"Admin recovery for cases where the per-operator pending-slash counter drifts from the true count of un-finalized proposals targeting the operator. Bypasses the normal increment/decrement path so it must only be called after verifying the correct count off-chain.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"MultiAssetDelegation\",\"version\":1},\"userdoc\":{\"errors\":{\"BlueprintNotRegisteredForOperator(address,uint64)\":[{\"notice\":\"Thrown when a Fixed-mode delegation references a blueprint the operator is not registered for. Such a pool can never be the target of a real slash (executeSlash always slashes the offending service's own blueprint, which the operator runs), so the stake would be permanently slash-immune. Declared locally to avoid touching the shared DelegationErrors library.\"}]},\"events\":{\"DustAccumulated(address,uint256,uint256)\":{\"notice\":\"Emitted when dust is accumulated from rounding\"},\"DustSwept(address,address,uint256)\":{\"notice\":\"Emitted when accumulated dust is swept to treasury\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when slash is recorded (for off-chain indexing of per-delegator impact)\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an operator and their delegators are slashed for an asset\"},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"notice\":\"Emitted when an operator is slashed for a specific service with per-asset commitments\"},\"SlashedPrincipalReconciled(address,bytes32,uint256)\":{\"notice\":\"Emitted when realized slash loss is cleared out of a delegator's deposit accounting.\"}},\"kind\":\"user\",\"methods\":{\"COMMISSION_CHANGE_DELAY()\":{\"notice\":\"Timelock delay for commission increases (14 days)\"},\"MAX_REWARD_MULTIPLIER_BPS()\":{\"notice\":\"Upper bound (2x) on a per-asset reward multiplier set via enableAsset.\"},\"blueprintSlashCount(uint64,address)\":{\"notice\":\"Slash count per blueprint: blueprintId => operator => count\"},\"clearFacetSelectors(bytes4[])\":{\"notice\":\"Remove selectors from the router\"},\"currentRound()\":{\"notice\":\"Current round number\"},\"delegationBondLessDelay()\":{\"notice\":\"Delay for unstaking delegations (in rounds)\"},\"facetForSelector(bytes4)\":{\"notice\":\"Resolve the facet for a selector\"},\"getAccumulatedDust(address)\":{\"notice\":\"Get accumulated dust for a token\"},\"getAssetAdapter(address)\":{\"notice\":\"Get adapter for a token\"},\"getPendingSlashCount(address)\":{\"notice\":\"Get pending slash count for an operator\"},\"getSlashCount(address)\":{\"notice\":\"Get total slashes for an operator\"},\"getSlashCountForBlueprint(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific blueprint\"},\"getSlashCountForService(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific service\"},\"getSlashImpact(address,uint64,address)\":{\"notice\":\"Calculate how much a delegator lost from a specific slash\"},\"getSlashRecord(address,uint64)\":{\"notice\":\"Get slash record details\"},\"getSnapshot(uint64,address)\":{\"notice\":\"Get snapshot for an operator at a specific round\"},\"initialize(address,uint256,uint256,uint16)\":{\"notice\":\"Initialize the contract\"},\"lastRoundAdvance()\":{\"notice\":\"Timestamp when the last round was advanced\"},\"leaveDelegatorsDelay()\":{\"notice\":\"Delay for delegator withdrawals (in rounds)\"},\"leaveOperatorsDelay()\":{\"notice\":\"Delay for operator exit (in rounds)\"},\"nativeEnabled()\":{\"notice\":\"Whether native asset is enabled\"},\"nextSlashId(address)\":{\"notice\":\"Next slash ID per operator\"},\"operatorCommissionBps()\":{\"notice\":\"Operator commission rate in basis points\"},\"registerFacet(address)\":{\"notice\":\"Register selectors exposed by a facet\"},\"registerFacetSelectors(address,bytes4[])\":{\"notice\":\"Register specific selectors for a facet\"},\"requireAdapters()\":{\"notice\":\"Whether to require adapters for all ERC20 deposits\"},\"resetPendingSlashCount(address,uint64)\":{\"notice\":\"Force `_operatorPendingSlashCount[operator]` to `count`.\"},\"roundDuration()\":{\"notice\":\"Seconds per round (used for time-based rate limiting)\"},\"serviceSlashCount(uint64,address)\":{\"notice\":\"Slash count per service: serviceId => operator => count\"},\"slashHistory(address,uint64)\":{\"notice\":\"Slash history per operator: operator => slashId => record\"}},\"notice\":\"Router contract for multi-asset staking\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MultiAssetDelegation.sol\":\"MultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"src/config/ProtocolConfig.sol\":{\"keccak256\":\"0x5f350b897faa2b6d983c8694124a5226b7fb98f7320d72c7d4b42dde59adb97d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://793b9c2e8a6b6680506927d2c960ac91505db05b8e846f3c989e4b57e7e323b7\",\"dweb:/ipfs/QmUmey1UQpDZaVTasr1eyrUxFYEaFxCy3cKNw3XYPhRXaa\"]},\"src/facets/FacetRouterBase.sol\":{\"keccak256\":\"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa\",\"dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD\"]},\"src/interfaces/IFacetSelectors.sol\":{\"keccak256\":\"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3\",\"dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba\",\"dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680\",\"dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369\",\"dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xe93c980b9274072d24fd9de10cfae048d7ccd5a49012e1ce59ae677158a65d75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79db7d81647b5948c28f1b7a6a1b990fe81d56838fb2c2904d226ae34023f2ef\",\"dweb:/ipfs/QmTaMpxc6FK4bf4JwY7BLAhhk4dm5zKcn1GAFnqn4ZMshh\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415\",\"dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ\"]},\"src/staking/DepositManager.sol\":{\"keccak256\":\"0xc49adab8ceeef905cd4357451358e59e5c5db60dd41878283f1f27359293f203\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://127b45f607fce682c08f75c305e7b40493ed6100f143e46d0b7bd4198c99fadc\",\"dweb:/ipfs/QmXwx2z3dVfDtmL9Vs2YyophVsDNZwDk7zX4JdJF4wFx6j\"]},\"src/staking/MultiAssetDelegation.sol\":{\"keccak256\":\"0x9317c3cbcb3c6a127c77064560a8ea5e4b5944100758162509a478d18750ec1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be0f287c899f2f2537765e2875b2402e7fe59f489c4c77639b4dca4c44968b81\",\"dweb:/ipfs/QmQUwWzqosHX18ti1mHvMZQbWmMF8JVZfY9yPCni9oVNEL\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb\",\"dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d\",\"dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf\",\"dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp\"]},\"src/staking/adapters/IAssetAdapter.sol\":{\"keccak256\":\"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44\",\"dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"type":"error","name":"BlueprintNotRegisteredForOperator"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"NotAContract"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"existingFacet","type":"address"}],"type":"error","name":"SelectorAlreadyRegistered"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"UnknownSelector"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalDust","type":"uint256","indexed":false}],"type":"event","name":"DustAccumulated","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DustSwept","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetRegistered","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"FacetSelectorCleared","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetSelectorSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8","indexed":false}],"type":"event","name":"OperatorDelegationModeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorWhitelistUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashCountReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashDecremented","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashIncremented","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SlashedPrincipalReconciled","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMISSION_CHANGE_DELAY","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_REWARD_MULTIPLIER_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_LOCK_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TANGLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_ASSETS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"blueprintSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"clearFacetSelectors"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"facetForSelector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAccumulatedDust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetAdapter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"lostAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSnapshot","outputs":[{"internalType":"struct Types.OperatorSnapshot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"totalDelegated","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"nativeMinOperatorStake","type":"uint256"},{"internalType":"uint256","name":"nativeMinDelegation","type":"uint256"},{"internalType":"uint16","name":"_operatorCommissionBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastRoundAdvance","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nextSlashId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerFacet"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"registerFacetSelectors"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"requireAdapters","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"resetPendingSlashCount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"serviceSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"slashHistory","outputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getAccumulatedDust(address)":{"params":{"token":"The token address (address(0) for native)"},"returns":{"_0":"The accumulated dust amount"}},"getAssetAdapter(address)":{"params":{"token":"Token address"},"returns":{"_0":"adapter Adapter address (or zero if none)"}},"getPendingSlashCount(address)":{"params":{"operator":"The operator to query"},"returns":{"_0":"count Number of pending slashes"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getSlashCountForBlueprint(uint64,address)":{"params":{"blueprintId":"The blueprint ID","operator":"The operator address"},"returns":{"_0":"count Number of times operator was slashed in services of this blueprint"}},"getSlashCountForService(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"count Number of times operator was slashed in this service"}},"getSlashImpact(address,uint64,address)":{"params":{"delegator":"The delegator to check","operator":"The operator that was slashed","slashId":"The slash event ID"},"returns":{"lostAmount":"Approximate amount lost due to this slash"}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,uint256,uint256,uint16)":{"params":{"_operatorCommissionBps":"Operator commission in basis points","admin":"Admin address","nativeMinDelegation":"Minimum delegation amount","nativeMinOperatorStake":"Minimum stake for operators"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"resetPendingSlashCount(address,uint64)":{"details":"Admin recovery for cases where the per-operator pending-slash counter drifts from the true count of un-finalized proposals targeting the operator. Bypasses the normal increment/decrement path so it must only be called after verifying the correct count off-chain."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"COMMISSION_CHANGE_DELAY()":{"notice":"Timelock delay for commission increases (14 days)"},"MAX_REWARD_MULTIPLIER_BPS()":{"notice":"Upper bound (2x) on a per-asset reward multiplier set via enableAsset."},"blueprintSlashCount(uint64,address)":{"notice":"Slash count per blueprint: blueprintId => operator => count"},"clearFacetSelectors(bytes4[])":{"notice":"Remove selectors from the router"},"currentRound()":{"notice":"Current round number"},"delegationBondLessDelay()":{"notice":"Delay for unstaking delegations (in rounds)"},"facetForSelector(bytes4)":{"notice":"Resolve the facet for a selector"},"getAccumulatedDust(address)":{"notice":"Get accumulated dust for a token"},"getAssetAdapter(address)":{"notice":"Get adapter for a token"},"getPendingSlashCount(address)":{"notice":"Get pending slash count for an operator"},"getSlashCount(address)":{"notice":"Get total slashes for an operator"},"getSlashCountForBlueprint(uint64,address)":{"notice":"Get slash count for an operator in a specific blueprint"},"getSlashCountForService(uint64,address)":{"notice":"Get slash count for an operator in a specific service"},"getSlashImpact(address,uint64,address)":{"notice":"Calculate how much a delegator lost from a specific slash"},"getSlashRecord(address,uint64)":{"notice":"Get slash record details"},"getSnapshot(uint64,address)":{"notice":"Get snapshot for an operator at a specific round"},"initialize(address,uint256,uint256,uint16)":{"notice":"Initialize the contract"},"lastRoundAdvance()":{"notice":"Timestamp when the last round was advanced"},"leaveDelegatorsDelay()":{"notice":"Delay for delegator withdrawals (in rounds)"},"leaveOperatorsDelay()":{"notice":"Delay for operator exit (in rounds)"},"nativeEnabled()":{"notice":"Whether native asset is enabled"},"nextSlashId(address)":{"notice":"Next slash ID per operator"},"operatorCommissionBps()":{"notice":"Operator commission rate in basis points"},"registerFacet(address)":{"notice":"Register selectors exposed by a facet"},"registerFacetSelectors(address,bytes4[])":{"notice":"Register specific selectors for a facet"},"requireAdapters()":{"notice":"Whether to require adapters for all ERC20 deposits"},"resetPendingSlashCount(address,uint64)":{"notice":"Force `_operatorPendingSlashCount[operator]` to `count`."},"roundDuration()":{"notice":"Seconds per round (used for time-based rate limiting)"},"serviceSlashCount(uint64,address)":{"notice":"Slash count per service: serviceId => operator => count"},"slashHistory(address,uint64)":{"notice":"Slash history per operator: operator => slashId => record"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/MultiAssetDelegation.sol":"MultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27","urls":["bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e","dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"src/config/ProtocolConfig.sol":{"keccak256":"0x5f350b897faa2b6d983c8694124a5226b7fb98f7320d72c7d4b42dde59adb97d","urls":["bzz-raw://793b9c2e8a6b6680506927d2c960ac91505db05b8e846f3c989e4b57e7e323b7","dweb:/ipfs/QmUmey1UQpDZaVTasr1eyrUxFYEaFxCy3cKNw3XYPhRXaa"],"license":"MIT"},"src/facets/FacetRouterBase.sol":{"keccak256":"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e","urls":["bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa","dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD"],"license":"MIT"},"src/interfaces/IFacetSelectors.sol":{"keccak256":"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4","urls":["bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3","dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6","urls":["bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba","dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x71906e56a8d011fe1fb70005c90ff88c5d34cd77664b4644450dfe58f33c5ba8","urls":["bzz-raw://dd66f6254e73d472aeef447afc134d1b8cb9621752c3dbc5cd301c954372d680","dweb:/ipfs/QmVdPTFNvuRNuA2koqzL6H6gNxvhmVw2DGtYjA11VBtQ73"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5","urls":["bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369","dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xe93c980b9274072d24fd9de10cfae048d7ccd5a49012e1ce59ae677158a65d75","urls":["bzz-raw://79db7d81647b5948c28f1b7a6a1b990fe81d56838fb2c2904d226ae34023f2ef","dweb:/ipfs/QmTaMpxc6FK4bf4JwY7BLAhhk4dm5zKcn1GAFnqn4ZMshh"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153","urls":["bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415","dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ"],"license":"MIT"},"src/staking/DepositManager.sol":{"keccak256":"0xc49adab8ceeef905cd4357451358e59e5c5db60dd41878283f1f27359293f203","urls":["bzz-raw://127b45f607fce682c08f75c305e7b40493ed6100f143e46d0b7bd4198c99fadc","dweb:/ipfs/QmXwx2z3dVfDtmL9Vs2YyophVsDNZwDk7zX4JdJF4wFx6j"],"license":"MIT"},"src/staking/MultiAssetDelegation.sol":{"keccak256":"0x9317c3cbcb3c6a127c77064560a8ea5e4b5944100758162509a478d18750ec1b","urls":["bzz-raw://be0f287c899f2f2537765e2875b2402e7fe59f489c4c77639b4dca4c44968b81","dweb:/ipfs/QmQUwWzqosHX18ti1mHvMZQbWmMF8JVZfY9yPCni9oVNEL"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0","urls":["bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb","dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c","urls":["bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d","dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a","urls":["bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf","dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp"],"license":"MIT"},"src/staking/adapters/IAssetAdapter.sol":{"keccak256":"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061","urls":["bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44","dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW"],"license":"MIT"}},"version":1},"id":56} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ASSET_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"BPS_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMISSION_CHANGE_DELAY","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MAX_REWARD_MULTIPLIER_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MIN_LOCK_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TANGLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_ASSETS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_SHARES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"clearFacetSelectors","inputs":[{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"facetForSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAccumulatedDust","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAssetAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"lostAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getSnapshot","inputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorSnapshot","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"totalDelegated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"nativeMinOperatorStake","type":"uint256","internalType":"uint256"},{"name":"nativeMinDelegation","type":"uint256","internalType":"uint256"},{"name":"_operatorCommissionBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastRoundAdvance","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nativeEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nextSlashId","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerFacet","inputs":[{"name":"facet","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerFacetSelectors","inputs":[{"name":"facet","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requireAdapters","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"resetPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"slashHistory","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"DustAccumulated","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalDust","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DustSwept","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FacetRegistered","inputs":[{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FacetSelectorCleared","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"FacetSelectorSet","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorDelegationModeSet","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"mode","type":"uint8","indexed":false,"internalType":"enum Types.DelegationMode"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorWhitelistUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PendingSlashCountReset","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashDecremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashIncremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedPrincipalReconciled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"assetHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"BlueprintNotRegisteredForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotAContract","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SelectorAlreadyRegistered","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"existingFacet","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523461003e5761001161004d565b610019610043565b61446f610307823960805181818161389a015281816138ff0152613aae015261446f90f35b610049565b60405190565b5f80fd5b61005561005f565b61005d61022a565b565b610067610069565b565b610071610073565b565b61007b61007d565b565b610085610087565b565b61008f610091565b565b61009961009b565b565b6100a36100a5565b565b6100ad6100af565b565b6100b76100b9565b565b6100c16100c3565b565b6100cb6100cd565b565b6100d56100d7565b565b6100df6100e1565b565b6100e961012d565b565b60018060a01b031690565b90565b61010d610108610112926100eb565b6100f6565b6100eb565b90565b61011e906100f9565b90565b61012a90610115565b90565b61013630610121565b608052565b60401c90565b60ff1690565b6101536101589161013b565b610141565b90565b6101659054610147565b90565b5f0190565b5f1c90565b60018060401b031690565b61018961018e9161016d565b610172565b90565b61019b905461017d565b90565b60018060401b031690565b5f1b90565b906101bf60018060401b03916101a9565b9181191691161790565b6101dd6101d86101e29261019e565b6100f6565b61019e565b90565b90565b906101fd6101f8610204926101c9565b6101e5565b82546101ae565b9055565b6102119061019e565b9052565b9190610228905f60208501940190610208565b565b6102326102e2565b61023d5f820161015b565b6102c65761024c5f8201610191565b61026461025e60018060401b0361019e565b9161019e565b0361026d575b50565b610280905f60018060401b0391016101e8565b60018060401b036102bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916102b4610043565b91829182610215565b0390a15f61026a565b5f63f92ee8a960e01b8152806102de60048201610168565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009056fe60806040526004361015610015575b366134e857005b61001f5f356103de565b806301ffc9a7146103d957806305d64e38146103d45780630aa8b110146103cf57806318056dc2146103ca57806319e82e61146103c5578063248a9ca3146103c05780632f2ff15d146103bb57806332273f61146103b657806336568abe146103b1578063453eccea146103ac57806346d163aa146103a757806349147411146103a25780634962f88f1461039d5780634de8addc146103985780634e9c929a146103935780634f1ef2861461038e5780635095af641461038957806352d1902d1461038457806354de23201461037f5780635c975abb1461037a578063602356e31461037557806366c368751461037057806372b5032d1461036b57806375b238fc1461036657806377ab2cf3146103615780637df92ada1461035c57806388c47f68146103575780638a19c8bc146103525780638a7fe60f1461034d57806390837ff41461034857806391d14854146103435780639480e4dd1461033e5780639494f4261461033957806396085673146103345780639722f4b91461032f5780639e8705851461032a578063a217fddf14610325578063a457af3d14610320578063a4b32de81461031b578063a7fa6f9814610316578063aaf5eb6814610311578063ad3cb1cc1461030c578063b54b2b9e14610307578063b5e2a87a14610302578063b6608409146102fd578063ba05bbf5146102f8578063c07449e2146102f3578063c550d938146102ee578063cbb6d6bd146102e9578063d27a6f06146102e4578063d45ff582146102df578063d547741f146102da578063db8a173a146102d5578063dd764abf146102d0578063e07dec29146102cb578063e1a45218146102c6578063e27e05c1146102c1578063f3c9b311146102bc578063f72c0d8b146102b75763f7cb789a0361000e57612042565b611ffe565b611f9a565b611f2d565b611ef8565b611e8f565b611e26565b611db4565b611d71565b611d3c565b611cce565b611c5e565b611b9c565b611b66565b611af8565b611ab4565b611a48565b6119db565b611997565b611868565b6117f5565b611788565b611723565b611601565b611591565b611522565b6114cc565b61147d565b61140e565b6113d8565b6113a3565b61136e565b611317565b6112d5565b611266565b6111f8565b611188565b611123565b6110ee565b6110b9565b611055565b611020565b610fb3565b610f7e565b610f25565b610dc9565b610d1a565b610cd5565b610c68565b610c20565b610bcd565b610b61565b610b2c565b610ac2565b610a60565b6109d6565b61090f565b610882565b61051f565b61046a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b61040b816103f6565b0361041257565b5f80fd5b9050359061042382610402565b565b9060208282031261043e5761043b915f01610416565b90565b6103ee565b151590565b61045190610443565b9052565b9190610468905f60208501940190610448565b565b3461049a57610496610485610480366004610425565b61207b565b61048d6103e4565b91829182610455565b0390f35b6103ea565b5f9103126104a957565b6103ee565b1c90565b60018060401b031690565b6104cd9060086104d293026104ae565b6104b2565b90565b906104e091546104bd565b90565b6104ef5f6010906104d5565b90565b60018060401b031690565b610506906104f2565b9052565b919061051d905f602085019401906104fd565b565b3461054f5761052f36600461049f565b61054b61053a6104e3565b6105426103e4565b9182918261050a565b0390f35b6103ea565b60018060a01b031690565b61056890610554565b90565b6105748161055f565b0361057b57565b5f80fd5b9050359061058c8261056b565b565b610597816104f2565b0361059e57565b5f80fd5b905035906105af8261058e565b565b91906040838203126105d957806105cd6105d6925f860161057f565b936020016105a2565b90565b6103ee565b90565b6105f56105f06105fa92610554565b6105de565b610554565b90565b610606906105e1565b90565b610612906105fd565b90565b9061061f90610609565b5f5260205260405f2090565b61063f61063a610644926104f2565b6105de565b6104f2565b90565b906106519061062b565b5f5260205260405f2090565b5f1c90565b61066e6106739161065d565b6104b2565b90565b6106809054610662565b90565b60401c90565b61069561069a91610683565b6104b2565b90565b6106a79054610689565b90565b60801c90565b6106bc6106c1916106aa565b6104b2565b90565b6106ce90546106b0565b90565b90565b6106e06106e59161065d565b6106d1565b90565b6106f290546106d4565b90565b61ffff1690565b61070861070d9161065d565b6106f5565b90565b61071a90546106fc565b90565b90565b61072c6107319161065d565b61071d565b90565b61073e9054610720565b90565b90610750610755926055610615565b610647565b6107605f8201610676565b9161076c5f830161069d565b916107785f82016106c4565b91610785600183016106e8565b9161079260028201610710565b9161079f60038301610734565b916107ac60048201610734565b916107c560066107be60058501610734565b93016106e8565b90565b90565b6107d4906107c8565b9052565b61ffff1690565b6107e8906107d8565b9052565b90565b6107f8906107ec565b9052565b9694929099989795939161012088019a5f8901610818916104fd565b60208801610825916104fd565b60408701610832916104fd565b6060860161083f916107cb565b6080850161084c916107df565b60a08401610859916107ef565b60c08301610866916107ef565b60e08201610873916107ef565b61010001610880916107cb565b565b346108bd576108b961089e6108983660046105b1565b90610741565b956108b09997999591959492946103e4565b998a998a6107fc565b0390f35b6103ea565b90565b6108d96108d46108de926108c2565b6105de565b6107d8565b90565b6108ec612af86108c5565b90565b6108f76108e1565b90565b919061090d905f602085019401906107df565b565b3461093f5761091f36600461049f565b61093b61092a6108ef565b6109326103e4565b918291826108fa565b0390f35b6103ea565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156109885781359160018060401b03831161098357602001926020830284011161097e57565b61094c565b610948565b610944565b9190916040818403126109cc576109a6835f830161057f565b92602082013560018060401b0381116109c7576109c39201610950565b9091565b6103f2565b6103ee565b5f0190565b34610a05576109ef6109e936600461098d565b9161213b565b6109f76103e4565b80610a01816109d1565b0390f35b6103ea565b610a13816107c8565b03610a1a57565b5f80fd5b90503590610a2b82610a0a565b565b90602082820312610a4657610a43915f01610a1e565b90565b6103ee565b9190610a5e905f602085019401906107cb565b565b34610a9057610a8c610a7b610a76366004610a2d565b61217f565b610a836103e4565b91829182610a4b565b0390f35b6103ea565b9190604083820312610abd5780610ab1610aba925f8601610a1e565b9360200161057f565b90565b6103ee565b34610af157610adb610ad5366004610a95565b906121d3565b610ae36103e4565b80610aed816109d1565b0390f35b6103ea565b610b06906008610b0b93026104ae565b6106f5565b90565b90610b199154610af6565b90565b610b296001601090610b0e565b90565b34610b5c57610b3c36600461049f565b610b58610b47610b1c565b610b4f6103e4565b918291826108fa565b0390f35b6103ea565b34610b9057610b7a610b74366004610a95565b906121df565b610b826103e4565b80610b8c816109d1565b0390f35b6103ea565b90565b610bac610ba7610bb192610b95565b6105de565b6107d8565b90565b610bbf614650610b98565b90565b610bca610bb4565b90565b34610bfd57610bdd36600461049f565b610bf9610be8610bc2565b610bf06103e4565b918291826108fa565b0390f35b6103ea565b90602082820312610c1b57610c18915f0161057f565b90565b6103ee565b34610c4e57610c38610c33366004610c02565b61231d565b610c406103e4565b80610c4a816109d1565b0390f35b6103ea565b9190610c66905f602085019401906107ef565b565b34610c9857610c94610c83610c7e366004610c02565b6123ff565b610c8b6103e4565b91829182610c53565b0390f35b6103ea565b90565b610cb4610caf610cb992610c9d565b6105de565b6107d8565b90565b610cc7612710610ca0565b90565b610cd2610cbc565b90565b34610d0557610ce536600461049f565b610d01610cf0610cca565b610cf86103e4565b918291826108fa565b0390f35b6103ea565b610d1760016008906104d5565b90565b34610d4a57610d2a36600461049f565b610d46610d35610d0a565b610d3d6103e4565b9182918261050a565b0390f35b6103ea565b9190604083820312610d775780610d6b610d74925f86016105a2565b9360200161057f565b90565b6103ee565b90610d869061062b565b5f5260205260405f2090565b90610d9c90610609565b5f5260205260405f2090565b610dc1610dc692610dbc6058935f94610d7c565b610d92565b6104d5565b90565b34610dfa57610df6610de5610ddf366004610d4f565b90610da8565b610ded6103e4565b9182918261050a565b0390f35b6103ea565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e2b90610e03565b810190811060018060401b03821117610e4357604052565b610e0d565b90610e5b610e546103e4565b9283610e21565b565b60018060401b038111610e7957610e75602091610e03565b0190565b610e0d565b90825f939282370152565b90929192610e9e610e9982610e5d565b610e48565b93818552602085019082840111610eba57610eb892610e7e565b565b610dff565b9080601f83011215610edd57816020610eda93359101610e89565b90565b610944565b919091604081840312610f2057610efb835f830161057f565b92602082013560018060401b038111610f1b57610f189201610ebf565b90565b6103f2565b6103ee565b610f39610f33366004610ee2565b90612447565b610f416103e4565b80610f4b816109d1565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610f7b610f4f565b90565b34610fae57610f8e36600461049f565b610faa610f99610f73565b610fa16103e4565b91829182610a4b565b0390f35b6103ea565b34610fe357610fc336600461049f565b610fdf610fce6124be565b610fd66103e4565b91829182610a4b565b0390f35b6103ea565b90565b610fff610ffa61100492610fe8565b6105de565b6107d8565b90565b6110126130d4610feb565b90565b61101d611007565b90565b346110505761103036600461049f565b61104c61103b611015565b6110436103e4565b918291826108fa565b0390f35b6103ea565b346110855761106536600461049f565b6110816110706124f2565b6110786103e4565b91829182610455565b0390f35b6103ea565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6110b661108a565b90565b346110e9576110c936600461049f565b6110e56110d46110ae565b6110dc6103e4565b91829182610a4b565b0390f35b6103ea565b3461111e5761111a611109611104366004610c02565b612514565b6111116103e4565b9182918261050a565b0390f35b6103ea565b346111545761115061113f611139366004610d4f565b90612533565b6111476103e4565b9182918261050a565b0390f35b6103ea565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b611185611159565b90565b346111b85761119836600461049f565b6111b46111a361117d565b6111ab6103e4565b91829182610a4b565b0390f35b6103ea565b60ff1690565b6111d39060086111d893026104ae565b6111bd565b90565b906111e691546111c3565b90565b6111f560055f906111db565b90565b346112285761120836600461049f565b6112246112136111e9565b61121b6103e4565b91829182610455565b0390f35b6103ea565b90565b61124461123f6112499261122d565b6105de565b6104f2565b90565b611258624f1a00611230565b90565b61126361124c565b90565b346112965761127636600461049f565b61129261128161125b565b6112896103e4565b9182918261050a565b0390f35b6103ea565b90565b6112b26112ad6112b79261129b565b6105de565b6107ec565b90565b6112c76305f5e10061129e565b90565b6112d26112ba565b90565b34611305576112e536600461049f565b6113016112f06112ca565b6112f86103e4565b91829182610c53565b0390f35b6103ea565b6113145f806104d5565b90565b346113475761132736600461049f565b61134361133261130a565b61133a6103e4565b9182918261050a565b0390f35b6103ea565b6113559061055f565b9052565b919061136c905f6020850194019061134c565b565b3461139e5761139a611389611384366004610c02565b6125a1565b6113916103e4565b91829182611359565b0390f35b6103ea565b346113d3576113cf6113be6113b9366004610425565b6125c0565b6113c66103e4565b91829182611359565b0390f35b6103ea565b34611409576114056113f46113ee366004610a95565b906125eb565b6113fc6103e4565b91829182610455565b0390f35b6103ea565b3461143e5761143a611429611424366004610c02565b61261d565b6114316103e4565b9182918261050a565b0390f35b6103ea565b90916060828403126114785761147561145e845f850161057f565b9361146c81602086016105a2565b9360400161057f565b90565b6103ee565b346114ae576114aa611499611493366004611443565b91612871565b6114a16103e4565b91829182610c53565b0390f35b6103ea565b6114c9906114c46056915f92610d92565b6104d5565b90565b346114fc576114f86114e76114e2366004610c02565b6114b3565b6114ef6103e4565b9182918261050a565b0390f35b6103ea565b61151a61151f926115156057935f94610d7c565b610d92565b6104d5565b90565b346115535761154f61153e611538366004610d4f565b90611501565b6115466103e4565b9182918261050a565b0390f35b6103ea565b90565b61156f61156a61157492611558565b6105de565b6104f2565b90565b61158362278d0061155b565b90565b61158e611577565b90565b346115c1576115a136600461049f565b6115bd6115ac611586565b6115b46103e4565b9182918261050a565b0390f35b6103ea565b90565b5f1b90565b6115e26115dd6115e7926115c6565b6115c9565b6107c8565b90565b6115f35f6115ce565b90565b6115fe6115ea565b90565b346116315761161136600461049f565b61162d61161c6115f6565b6116246103e4565b91829182610a4b565b0390f35b6103ea565b61163f906104f2565b9052565b61164c906107c8565b9052565b611659906107d8565b9052565b611666906107ec565b9052565b906101008061170b936116835f8201515f860190611636565b61169560208201516020860190611636565b6116a760408201516040860190611636565b6116b960608201516060860190611643565b6116cb60808201516080860190611650565b6116dd60a082015160a086019061165d565b6116ef60c082015160c086019061165d565b61170160e082015160e086019061165d565b0151910190611643565b565b9190611721905f610120850194019061166a565b565b346117545761175061173f6117393660046105b1565b90612a1f565b6117476103e4565b9182918261170d565b0390f35b6103ea565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b611785611759565b90565b346117b85761179836600461049f565b6117b46117a361177d565b6117ab6103e4565b91829182610a4b565b0390f35b6103ea565b90565b6117d46117cf6117d9926117bd565b6105de565b6107d8565b90565b6117e76138a46117c0565b90565b6117f26117dc565b90565b346118255761180536600461049f565b6118216118106117ea565b6118186103e4565b918291826108fa565b0390f35b6103ea565b90565b61184161183c6118469261182a565b6105de565b6107ec565b90565b61185a670de0b6b3a764000061182d565b90565b611865611849565b90565b346118985761187836600461049f565b61189461188361185d565b61188b6103e4565b91829182610c53565b0390f35b6103ea565b60018060401b0381116118b9576118b5602091610e03565b0190565b610e0d565b906118d06118cb8361189d565b610e48565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61190660056118be565b90611913602083016118d5565b565b61191d6118fc565b90565b611928611915565b90565b611933611920565b90565b5190565b60209181520190565b90825f9392825e0152565b61196d61197660209361197b9361196481611936565b9384809361193a565b95869101611943565b610e03565b0190565b6119949160208201915f81840391015261194e565b90565b346119c7576119a736600461049f565b6119c36119b261192b565b6119ba6103e4565b9182918261197f565b0390f35b6103ea565b6119d860075f906111db565b90565b34611a0b576119eb36600461049f565b611a076119f66119cc565b6119fe6103e4565b91829182610455565b0390f35b6103ea565b90565b611a27611a22611a2c92611a10565b6105de565b6107d8565b90565b611a3a614e20611a13565b90565b611a45611a2f565b90565b34611a7857611a5836600461049f565b611a74611a63611a3d565b611a6b6103e4565b918291826108fa565b0390f35b6103ea565b90565b611a94611a8f611a9992611a7d565b6105de565b6107ec565b90565b611aa66001611a80565b90565b611ab1611a9c565b90565b34611ae457611ac436600461049f565b611ae0611acf611aa9565b611ad76103e4565b91829182610c53565b0390f35b6103ea565b611af55f6018906104d5565b90565b34611b2857611b0836600461049f565b611b24611b13611ae9565b611b1b6103e4565b9182918261050a565b0390f35b6103ea565b90602080611b4f93611b455f8201515f86019061165d565b015191019061165d565b565b9190611b64905f60408501940190611b2d565b565b34611b9757611b93611b82611b7c366004610d4f565b90612af6565b611b8a6103e4565b91829182611b51565b0390f35b6103ea565b34611bcd57611bc9611bb8611bb2366004610d4f565b90612b1e565b611bc06103e4565b9182918261050a565b0390f35b6103ea565b611bdb816107ec565b03611be257565b5f80fd5b90503590611bf382611bd2565b565b611bfe816107d8565b03611c0557565b5f80fd5b90503590611c1682611bf5565b565b608081830312611c5957611c2e825f830161057f565b92611c56611c3f8460208501611be6565b93611c4d8160408601611be6565b93606001611c09565b90565b6103ee565b34611c9057611c7a611c71366004611c18565b92919091613312565b611c826103e4565b80611c8c816109d1565b0390f35b6103ea565b90565b611cac611ca7611cb192611c95565b6105de565b6104f2565b90565b611cc06276a700611c98565b90565b611ccb611cb4565b90565b34611cfe57611cde36600461049f565b611cfa611ce9611cc3565b611cf16103e4565b9182918261050a565b0390f35b6103ea565b90565b611d1a611d15611d1f92611d03565b6105de565b6104f2565b90565b611d2e62127500611d06565b90565b611d39611d22565b90565b34611d6c57611d4c36600461049f565b611d68611d57611d31565b611d5f6103e4565b9182918261050a565b0390f35b6103ea565b34611da057611d8a611d84366004610a95565b9061334a565b611d926103e4565b80611d9c816109d1565b0390f35b6103ea565b611db160015f906104d5565b90565b34611de457611dc436600461049f565b611de0611dcf611da5565b611dd76103e4565b9182918261050a565b0390f35b6103ea565b90565b611e00611dfb611e0592611de9565b6105de565b6107ec565b90565b611e18662386f26fc10000611dec565b90565b611e23611e08565b90565b34611e5657611e3636600461049f565b611e52611e41611e1b565b611e496103e4565b91829182610c53565b0390f35b6103ea565b90602082820312611e8a575f82013560018060401b038111611e8557611e819201610950565b9091565b6103f2565b6103ee565b34611ebe57611ea8611ea2366004611e5b565b906133ab565b611eb06103e4565b80611eba816109d1565b0390f35b6103ea565b611ed7611ed2611edc92610c9d565b6105de565b6107ec565b90565b611eea612710611ec3565b90565b611ef5611edf565b90565b34611f2857611f0836600461049f565b611f24611f13611eed565b611f1b6103e4565b91829182610c53565b0390f35b6103ea565b34611f5c57611f46611f403660046105b1565b906134dc565b611f4e6103e4565b80611f58816109d1565b0390f35b6103ea565b90565b611f78611f73611f7d92611f61565b6105de565b6104f2565b90565b611f8c62ed4e00611f64565b90565b611f97611f80565b90565b34611fca57611faa36600461049f565b611fc6611fb5611f8f565b611fbd6103e4565b9182918261050a565b0390f35b6103ea565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390565b611ffb611fcf565b90565b3461202e5761200e36600461049f565b61202a612019611ff3565b6120216103e4565b91829182610a4b565b0390f35b6103ea565b61203f5f6008906104d5565b90565b346120725761205236600461049f565b61206e61205d612033565b6120656103e4565b9182918261050a565b0390f35b6103ea565b5f90565b612083612077565b508061209e612098637965db0b60e01b6103f6565b916103f6565b149081156120ab575b5090565b6120b591506134ed565b5f6120a7565b60018060401b0381116120d15760208091020190565b610e0d565b909291926120eb6120e6826120bb565b610e48565b938185526020808601920283019281841161212857915b83831061210f5750505050565b6020809161211d8486610416565b815201920191612102565b61094c565b6121389136916120d6565b90565b612157926121519161214b613525565b9261212d565b90613560565b565b5f90565b612166906107c8565b90565b906121739061215d565b5f5260205260405f2090565b60016121a06121a692612190612159565b505f61219a6136d4565b01612169565b016106e8565b90565b906121c4916121bf6121ba8261217f565b6136f8565b6121c6565b565b906121d09161370c565b50565b906121dd916121a9565b565b90806121fa6121f46121ef6137c3565b61055f565b9161055f565b0361220b57612208916137d0565b50565b5f63334bd91960e11b815280612223600482016109d1565b0390fd5b612230906105e1565b90565b61223c90612227565b90565b612248906105fd565b90565b60e01b90565b9050519061225e82610402565b565b90929192612275612270826120bb565b610e48565b93818552602080860192028301928184116122b257915b8383106122995750505050565b602080916122a78486612251565b81520192019161228c565b61094c565b9080601f830112156122d5578160206122d293519101612260565b90565b610944565b90602082820312612308575f82015160018060401b0381116123035761230092016122b7565b90565b6103f2565b6103ee565b6123156103e4565b3d5f823e3d90fd5b612325613525565b6123505f61233a61233584612233565b61223f565b636e25b978906123486103e4565b93849261224b565b82528180612360600482016109d1565b03915afa80156123e05761237c915f916123be575b5082613560565b6123a67f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d91610609565b906123af6103e4565b806123b9816109d1565b0390a2565b6123da91503d805f833e6123d28183610e21565b8101906122da565b5f612375565b61230d565b5f90565b906123f390610609565b5f5260205260405f2090565b61241661241b9161240e6123e5565b5060196123e9565b610734565b90565b906124309161242b613889565b612432565b565b906124459161244081613943565b61399f565b565b906124519161241e565b565b6124649061245f613a9d565b6124b2565b90565b90565b61247e61247961248392612467565b6115c9565b6107c8565b90565b6124af7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61246a565b90565b506124bb612486565b90565b6124ce6124c9612159565b612453565b90565b6124dd6124e29161065d565b6111bd565b90565b6124ef90546124d1565b90565b6124fa612077565b5061250d5f612507613afb565b016124e5565b90565b5f90565b61252b61253091612523612510565b506056610d92565b610676565b90565b6125589161254e61255392612546612510565b506057610d7c565b610d92565b610676565b90565b5f90565b9061256990610609565b5f5260205260405f2090565b60018060a01b031690565b61258c6125919161065d565b612575565b90565b61259e9054612580565b90565b6125b86125bd916125b061255b565b50600661255f565b612594565b90565b6125d2906125cc61255b565b50613b35565b90565b906125df90610609565b5f5260205260405f2090565b61261a915f61260f612615936125ff612077565b50826126096136d4565b01612169565b016125d5565b6124e5565b90565b6126346126399161262c612510565b506021610d92565b610676565b90565b90612646906104f2565b9052565b90612654906107c8565b9052565b90612662906107d8565b9052565b90612670906107ec565b9052565b61267f610120610e48565b90565b906127606127566006612693612674565b946126aa6126a25f8301610676565b5f880161263c565b6126c16126b85f830161069d565b6020880161263c565b6126d86126cf5f83016106c4565b6040880161263c565b6126f06126e7600183016106e8565b6060880161264a565b6127086126ff60028301610710565b60808801612658565b61272061271760038301610734565b60a08801612666565b61273861272f60048301610734565b60c08801612666565b61275061274760058301610734565b60e08801612666565b016106e8565b610100840161264a565b565b61276b90612682565b90565b61277890516104f2565b90565b61278f61278a612794926115c6565b6105de565b6104f2565b90565b6127ab6127a66127b0926115c6565b6105de565b6107ec565b90565b6127bd90516107c8565b90565b6127ca90516107ec565b90565b634e487b7160e01b5f52601160045260245ffd5b6127f06127f6919392936107ec565b926107ec565b820391821161280157565b6127cd565b61281561281b919392936107ec565b926107ec565b916128278382026107ec565b92818404149015171561283657565b6127cd565b634e487b7160e01b5f52601260045260245ffd5b61285b612861916107ec565b916107ec565b90811561286c570490565b61283b565b9291909261289a6128956128836123e5565b9561289060558590610615565b610647565b612762565b916128a65f840161276e565b6128b86128b25f61277b565b916104f2565b1461297957906128d591906128cf606085016127b3565b91613c69565b90816128e96128e35f612797565b916107ec565b14612969576128fa60c082016127c0565b61291761291161290c60e085016127c0565b6107ec565b916107ec565b11612921575b5050565b6129619293509061294d8261294760e061294060c061295397016127c0565b92016127c0565b906127e1565b90612806565b61295b611849565b9061284f565b905f8061291d565b505090506129765f612797565b90565b50505090506129875f612797565b90565b5f90565b5f90565b5f90565b5f90565b6129a2612674565b90602080808080808080808a6129b661298a565b8152016129c161298a565b8152016129cc61298a565b8152016129d761298e565b8152016129e2612992565b8152016129ed612996565b8152016129f8612996565b815201612a03612996565b815201612a0e61298e565b81525050565b612a1c61299a565b90565b612a4491612a3a612a3f92612a32612a14565b506055610615565b610647565b612762565b90565b612a516040610e48565b90565b612a5c612a47565b9060208083612a69612996565b815201612a74612996565b81525050565b612a82612a54565b90565b90612a8f9061062b565b5f5260205260405f2090565b90612aa590610609565b5f5260205260405f2090565b90612ae8612adf6001612ac2612a47565b94612ad9612ad15f8301610734565b5f8801612666565b01610734565b60208401612666565b565b612af390612ab1565b90565b612b1b91612b11612b1692612b09612a7a565b506010612a85565b612a9b565b612aea565b90565b612b4391612b39612b3e92612b31612510565b506058610d7c565b610d92565b610676565b90565b612b52612b5791610683565b6111bd565b90565b612b649054612b46565b90565b612b7b612b76612b8092611a7d565b6105de565b6104f2565b90565b612b8c906105fd565b90565b90612ba060018060401b03916115c9565b9181191691161790565b90565b90612bc2612bbd612bc99261062b565b612baa565b8254612b8f565b9055565b60401b90565b90612be260ff60401b91612bcd565b9181191691161790565b612bf590610443565b90565b90565b90612c10612c0b612c1792612bec565b612bf8565b8254612bd3565b9055565b612c2490612b67565b9052565b9190612c3b905f60208501940190612c1b565b565b909192612c48613d58565b93612c5d612c575f8701612b5a565b15610443565b93612c695f8701610676565b80612c7c612c765f61277b565b916104f2565b1480612d96575b90612c97612c916001612b67565b916104f2565b1480612d6e575b612ca9909115610443565b9081612d5d575b50612d4157612cd993612cce612cc66001612b67565b5f8901612bad565b85612d2f575b613154565b612ce1575b50565b612cee905f809101612bfb565b6001612d267fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d1d6103e4565b91829182612c28565b0390a15f612cde565b612d3c60015f8901612bfb565b612cd4565b5f63f92ee8a960e01b815280612d59600482016109d1565b0390fd5b612d68915015610443565b5f612cb0565b50612ca9612d7b30612b83565b3b612d8e612d885f612797565b916107ec565b149050612c9e565b5085612c83565b612db1612dac612db6926115c6565b6105de565b610554565b90565b612dc290612d9d565b90565b612dcf6040610e48565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612df057565b612dd2565b90612dff82612de6565b565b90612e0b90612df5565b9052565b90612e199061055f565b9052565b612e31612e2c612e36926107ec565b6105de565b6107d8565b90565b612e4360c0610e48565b90565b90612e5090610443565b9052565b90612e5e9061215d565b5f5260205260405f2090565b612e749051610443565b90565b90612e8360ff916115c9565b9181191691161790565b90612ea2612e9d612ea992612bec565b612bf8565b8254612e77565b9055565b612eb790516107d8565b90565b60081b90565b90612ece62ffff0091612eba565b9181191691161790565b612eec612ee7612ef1926107d8565b6105de565b6107d8565b90565b90565b90612f0c612f07612f1392612ed8565b612ef4565b8254612ec0565b9055565b90612f235f19916115c9565b9181191691161790565b612f41612f3c612f46926107ec565b6105de565b6107ec565b90565b90565b90612f61612f5c612f6892612f2d565b612f49565b8254612f17565b9055565b90612ffa60a0600461300094612f8f5f8201612f895f8801612e6a565b90612e8d565b612fa75f8201612fa160208801612ead565b90612ef7565b612fc060018201612fba604088016127c0565b90612f4c565b612fd960028201612fd3606088016127c0565b90612f4c565b612ff260038201612fec608088016127c0565b90612f4c565b0192016127c0565b90612f4c565b565b9061300c91612f6c565b565b60801b90565b9061302461ffff60801b9161300e565b9181191691161790565b9061304361303e61304a92612ed8565b612ef4565b8254613014565b9055565b90565b61306561306061306a9261304e565b6105de565b6104f2565b90565b613078615460613051565b90565b90613090600160401b600160801b0391612bcd565b9181191691161790565b906130af6130aa6130b69261062b565b612baa565b825461307b565b9055565b90565b6130d16130cc6130d6926130ba565b6105de565b6104f2565b90565b6130e3601c6130bd565b90565b60c01b90565b906130fe60018060c01b0319916130e6565b9181191691161790565b9061311d6131186131249261062b565b612baa565b82546130ec565b9055565b90565b61313f61313a61314492613128565b6105de565b6104f2565b90565b613151603861312b565b90565b91909161315f613d86565b613167613d9a565b61316f613dc0565b613177613de6565b61317f6115ea565b816131899161370c565b50613192611159565b8161319c9161370c565b506131a5611759565b816131af9161370c565b506131b8611fcf565b906131c29161370c565b505f806131ce90612db9565b6131d6612dc5565b915f8301906131e491612e01565b60208201906131f291612e0f565b6131fb90613e50565b90600192905f905f9261320c611edf565b61321590612e1d565b61321d612e39565b965f88019061322b91612e46565b602087019061323991612658565b604086019061324791612666565b606085019061325591612666565b61325e90612797565b608084019061326c91612666565b61327590612797565b60a083019061328391612666565b60029061328f91612e54565b9061329991613002565b60016132a6906005612e8d565b6132b190600161302e565b60016132bc90612b67565b6132c6905f612bad565b6132ce61306d565b6132d8905f61309a565b6132e06130d9565b6132ea905f613108565b6132f26130d9565b6132fd906001612bad565b613305613147565b61331090600161309a565b565b9061331e939291612c3d565b565b9061333b916133366133318261217f565b6136f8565b61333d565b565b90613347916137d0565b50565b9061335491613320565b565b600161336291016107ec565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561338d576020020190565b613369565b3561339c81610402565b90565b6133a8906103f6565b90565b9190916133b6613525565b6133bf5f612797565b5b806133dd6133d76133d2858890613365565b6107ec565b916107ec565b10156134615761345c906134036133fe6133f98588859161337d565b613392565b613f17565b6134176134128487849161337d565b613392565b6134417fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb9161339f565b9061344a6103e4565b80613454816109d1565b0390a2613356565b6133c0565b50509050565b906134819161347c613477611159565b6136f8565b613483565b565b6134988261349360218490610d92565b612bad565b6134d76134c57f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f3592610609565b926134ce6103e4565b9182918261050a565b0390a2565b906134e691613467565b565b613f2d565b6134f5612077565b5061350f6135096301ffc9a760e01b6103f6565b916103f6565b1490565b61352361351e611fcf565b6136f8565b565b61352d613513565b565b5190565b9061353d8261352f565b81101561354e576020809102010190565b613369565b61355d90516103f6565b90565b91908261357d6135776135725f612db9565b61055f565b9161055f565b146136cf57823b6135966135905f612797565b916107ec565b146136c9576135a45f612797565b5b806135c06135ba6135b58561352f565b6107ec565b916107ec565b10156136c3576135e16135dc6135d7848490613533565b613553565b613b35565b806135fc6135f66135f15f612db9565b61055f565b9161055f565b1415806136a8575b613691575061368c9061362a61362361361e858490613533565b613553565b8690614034565b61363d613638848390613533565b613553565b8561367161366b7f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b399361339f565b91610609565b9161367a6103e4565b80613684816109d1565b0390a3613356565b6135a5565b6136a361369e8385613533565b613553565b613fdb565b50806136bc6136b68761055f565b9161055f565b1415613604565b50509050565b82613f8c565b613f70565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61370a906137046137c3565b9061406d565b565b613714612077565b5061371d6136d4565b61373161372b8385906125eb565b15610443565b5f146137bc5761375b906137565f61374e81600194018690612169565b0185906125d5565b612e8d565b906137646137c3565b906137a161379b6137957f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9561215d565b92610609565b92610609565b926137aa6103e4565b806137b4816109d1565b0390a4600190565b5050505f90565b6137cb61255b565b503390565b6137d8612077565b506137e16136d4565b6137ec8284906125eb565b5f1461387657613815906138105f613808818094018690612169565b0185906125d5565b612e8d565b9061381e6137c3565b9061385b61385561384f7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9561215d565b92610609565b92610609565b926138646103e4565b8061386e816109d1565b0390a4600190565b5050505f90565b613886906105fd565b90565b6138923061387d565b6138c46138be7f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b1480156138ee575b6138d257565b5f63703e46dd60e11b8152806138ea600482016109d1565b0390fd5b506138f76140a8565b6139296139237f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b14156138cc565b5061394161393c611fcf565b6136f8565b565b61394c90613930565b565b613957906105e1565b90565b6139639061394e565b90565b61396f906105fd565b90565b9050519061397f82610a0a565b565b9060208282031261399a57613997915f01613972565b90565b6103ee565b91906139cd60206139b76139b28661395a565b613966565b6352d1902d906139c56103e4565b93849261224b565b825281806139dd600482016109d1565b03915afa80915f92613a6d575b50155f14613a1e5750509060016139ff57505b565b613a1a905f918291634c9c8ce360e01b835260048301611359565b0390fd5b9283613a39613a33613a2e612486565b6107c8565b916107c8565b03613a4e57613a499293506140ce565b6139fd565b613a69845f918291632a87526960e21b835260048301610a4b565b0390fd5b613a8f91925060203d8111613a96575b613a878183610e21565b810190613981565b905f6139ea565b503d613a7d565b613aa63061387d565b613ad8613ad27f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b03613adf57565b5f63703e46dd60e11b815280613af7600482016109d1565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b299061339f565b5f5260205260405f2090565b613b4c613b5191613b4461255b565b50601f613b1f565b612594565b90565b90613b5e90610609565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b8381613b6d565b821015613b9d57613b95600391613b71565b910201905f90565b613369565b90565b60ff1690565b613bb7613bbc9161065d565b613ba5565b90565b613bc99054613bab565b90565b60081c90565b613bde613be391613bcc565b612575565b90565b613bf09054613bd2565b90565b613bfd6040610e48565b90565b90613c36613c2d5f613c10613bf3565b94613c27613c1f838301613bbf565b838801612e01565b01613be6565b60208401612e0f565b565b613c4190613c00565b90565b613c53613c59919392936107ec565b926107ec565b8201809211613c6457565b6127cd565b929192613c87613c82613c7a6123e5565b926014613b54565b613b6a565b93613c9185613b6d565b93613c9b5f612797565b5b80613caf613ca9886107ec565b916107ec565b1015613d4f57613cc9613cc3888390613b7a565b50613ba2565b613cd560018201612594565b613ce7613ce18861055f565b9161055f565b1480613d22575b613d02575b50613cfd90613356565b613c9c565b613cfd9194613d155f613d1b9301610734565b90613c44565b9390613cf3565b50613d37613d3260028301613c38565b613e50565b613d49613d43866107c8565b916107c8565b14613cee565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d84614157565b565b613d8e613d7c565b565b613d98614157565b565b613da2613d90565b565b613dac614157565b613db4613db6565b565b613dbe6141b2565b565b613dc8613da4565b565b613dd2614157565b613dda613ddc565b565b613de46141f8565b565b613dee613dca565b565b613dfa9051612df5565b90565b613e07905161055f565b90565b613e1390612df5565b90565b613e1f90613e0a565b9052565b916020613e44929493613e3d60408201965f830190613e16565b019061134c565b565b60200190565b5190565b613e58612159565b50613e9a613e736020613e6c5f8501613df0565b9301613dfd565b91613e8b613e7f6103e4565b93849260208401613e23565b60208201810382520382610e21565b613eac613ea682613e4c565b91613e46565b2090565b1b90565b91906008613ed4910291613ece60018060a01b0384613eb0565b92613eb0565b9181191691161790565b90565b9190613ef7613ef2613eff93610609565b613ede565b908354613eb4565b9055565b613f1591613f0f61255b565b91613ee1565b565b5f613f26613f2b92601f613b1f565b613f03565b565b613f4063ffffffff60e01b5f3516613b35565b80613f5b613f55613f505f612db9565b61055f565b9161055f565b036142365763ffffffff60e01b5f3516614217565b5f63d92e233d60e01b815280613f88600482016109d1565b0390fd5b613fa7905f9182916322a2d07b60e21b835260048301611359565b0390fd5b613fb4906103f6565b9052565b916020613fd9929493613fd260408201965f830190613fab565b019061134c565b565b613ff55f9283926310ae11a960e31b845260048401613fb8565b0390fd5b9061400a60018060a01b03916115c9565b9181191691161790565b9061402961402461403092610609565b613ede565b8254613ff9565b9055565b6140436140489291601f613b1f565b614014565b565b91602061406b92949361406460408201965f83019061134c565b01906107cb565b565b9061408261407c8383906125eb565b15610443565b61408a575050565b6140a45f92839263e2517d3f60e01b84526004840161404a565b0390fd5b6140b061255b565b506140cb5f6140c56140c0612486565b614254565b01612594565b90565b906140d882614257565b816141037fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610609565b9061410c6103e4565b80614116816109d1565b0390a261412281613e4c565b61413461412e5f612797565b916107ec565b115f146141485761414491614327565b505b565b50506141526142ac565b614146565b614168614162614356565b15610443565b61416e57565b5f631afcd79f60e31b815280614186600482016109d1565b0390fd5b614192614157565b61419a61419c565b565b6141b06141a7613afb565b5f809101612e8d565b565b6141ba61418a565b565b6141c4614157565b6141cc6141db565b565b6141d86001611a80565b90565b6141f66141e6614374565b5f6141ef6141ce565b9101612f4c565b565b6142006141bc565b565b9190614215905f60208501940190613fab565b565b614232905f91829163c2a825f560e01b835260048301614202565b0390fd5b5f8091368280378136915af43d5f803e5f14614250573d5ff35b3d5ffd5b90565b803b61426b6142655f612797565b916107ec565b1461428d5761428b905f614285614280612486565b614254565b01614014565b565b6142a8905f918291634c9c8ce360e01b835260048301611359565b0390fd5b346142bf6142b95f612797565b916107ec565b116142c657565b5f63b398979f60e01b8152806142de600482016109d1565b0390fd5b606090565b906142f96142f483610e5d565b610e48565b918252565b3d5f146143195761430e3d6142e7565b903d5f602084013e5b565b6143216142e2565b90614317565b5f80614353936143356142e2565b508390602081019051915af49061434a6142fe565b90919091614398565b90565b61435e612077565b506143715f61436b613d58565b01612b5a565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143ac906143a56142e2565b5015610443565b5f146143b8575061441c565b6143c182613e4c565b6143d36143cd5f612797565b916107ec565b1480614401575b6143e2575090565b6143fd905f918291639996b31560e01b835260048301611359565b0390fd5b50803b6144166144105f612797565b916107ec565b146143da565b61442581613e4c565b6144376144315f612797565b916107ec565b115f1461444657805190602001fd5b5f63d6bda27560e01b81528061445e600482016109d1565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:4613:56:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;1313:53;;;:::i;:::-;;;:::i;:::-;:::o;390:3323:30:-;;;:::i;:::-;:::o;593:16311:55:-;;;:::i;:::-;:::o;833:35059:60:-;;;:::i;:::-;:::o;776:16259:59:-;;;:::i;:::-;:::o;749:57277:53:-;;;:::i;:::-;:::o;622:22009:57:-;;;:::i;:::-;:::o;427:30334:54:-;;;:::i;:::-;:::o;1094:3411:27:-;;;:::i;:::-;:::o;701:3153:26:-;;;:::i;:::-;:::o;2090:6192:22:-;;;:::i;:::-;:::o;769:414:28:-;;;:::i;:::-;:::o;422:447:18:-;;;:::i;:::-;:::o;226:3116:0:-;;;:::i;:::-;:::o;688:505:25:-;;;:::i;:::-;:::o;1033:4613:56:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5611:24:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5611::o;1033:4613:56:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;7711:422:23:-;7859:26;;:::i;:::-;7900:15;;:1;:15;;:::i;:::-;7896:76;;7985:14;;:1;:14;;:::i;:::-;:34;;1033:4613:56;;;;;7985:34:23;:::i;:::-;;;:::i;:::-;;7981:146;;7711:422;;:::o;7981:146::-;8035:33;1033:4613:56;8035:14:23;1033:4613:56;;;;;8035:1:23;:14;:33;:::i;:::-;1033:4613:56;;;;;8087:29:23;;;;;:::i;:::-;;;;;;:::i;:::-;;;;7981:146;;;7896:76;7938:23;;;;;;;;;;;;:::i;:::-;;;;8737:170;8837:64;8737:170;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610015575b366134e857005b61001f5f356103de565b806301ffc9a7146103d957806305d64e38146103d45780630aa8b110146103cf57806318056dc2146103ca57806319e82e61146103c5578063248a9ca3146103c05780632f2ff15d146103bb57806332273f61146103b657806336568abe146103b1578063453eccea146103ac57806346d163aa146103a757806349147411146103a25780634962f88f1461039d5780634de8addc146103985780634e9c929a146103935780634f1ef2861461038e5780635095af641461038957806352d1902d1461038457806354de23201461037f5780635c975abb1461037a578063602356e31461037557806366c368751461037057806372b5032d1461036b57806375b238fc1461036657806377ab2cf3146103615780637df92ada1461035c57806388c47f68146103575780638a19c8bc146103525780638a7fe60f1461034d57806390837ff41461034857806391d14854146103435780639480e4dd1461033e5780639494f4261461033957806396085673146103345780639722f4b91461032f5780639e8705851461032a578063a217fddf14610325578063a457af3d14610320578063a4b32de81461031b578063a7fa6f9814610316578063aaf5eb6814610311578063ad3cb1cc1461030c578063b54b2b9e14610307578063b5e2a87a14610302578063b6608409146102fd578063ba05bbf5146102f8578063c07449e2146102f3578063c550d938146102ee578063cbb6d6bd146102e9578063d27a6f06146102e4578063d45ff582146102df578063d547741f146102da578063db8a173a146102d5578063dd764abf146102d0578063e07dec29146102cb578063e1a45218146102c6578063e27e05c1146102c1578063f3c9b311146102bc578063f72c0d8b146102b75763f7cb789a0361000e57612042565b611ffe565b611f9a565b611f2d565b611ef8565b611e8f565b611e26565b611db4565b611d71565b611d3c565b611cce565b611c5e565b611b9c565b611b66565b611af8565b611ab4565b611a48565b6119db565b611997565b611868565b6117f5565b611788565b611723565b611601565b611591565b611522565b6114cc565b61147d565b61140e565b6113d8565b6113a3565b61136e565b611317565b6112d5565b611266565b6111f8565b611188565b611123565b6110ee565b6110b9565b611055565b611020565b610fb3565b610f7e565b610f25565b610dc9565b610d1a565b610cd5565b610c68565b610c20565b610bcd565b610b61565b610b2c565b610ac2565b610a60565b6109d6565b61090f565b610882565b61051f565b61046a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b61040b816103f6565b0361041257565b5f80fd5b9050359061042382610402565b565b9060208282031261043e5761043b915f01610416565b90565b6103ee565b151590565b61045190610443565b9052565b9190610468905f60208501940190610448565b565b3461049a57610496610485610480366004610425565b61207b565b61048d6103e4565b91829182610455565b0390f35b6103ea565b5f9103126104a957565b6103ee565b1c90565b60018060401b031690565b6104cd9060086104d293026104ae565b6104b2565b90565b906104e091546104bd565b90565b6104ef5f6010906104d5565b90565b60018060401b031690565b610506906104f2565b9052565b919061051d905f602085019401906104fd565b565b3461054f5761052f36600461049f565b61054b61053a6104e3565b6105426103e4565b9182918261050a565b0390f35b6103ea565b60018060a01b031690565b61056890610554565b90565b6105748161055f565b0361057b57565b5f80fd5b9050359061058c8261056b565b565b610597816104f2565b0361059e57565b5f80fd5b905035906105af8261058e565b565b91906040838203126105d957806105cd6105d6925f860161057f565b936020016105a2565b90565b6103ee565b90565b6105f56105f06105fa92610554565b6105de565b610554565b90565b610606906105e1565b90565b610612906105fd565b90565b9061061f90610609565b5f5260205260405f2090565b61063f61063a610644926104f2565b6105de565b6104f2565b90565b906106519061062b565b5f5260205260405f2090565b5f1c90565b61066e6106739161065d565b6104b2565b90565b6106809054610662565b90565b60401c90565b61069561069a91610683565b6104b2565b90565b6106a79054610689565b90565b60801c90565b6106bc6106c1916106aa565b6104b2565b90565b6106ce90546106b0565b90565b90565b6106e06106e59161065d565b6106d1565b90565b6106f290546106d4565b90565b61ffff1690565b61070861070d9161065d565b6106f5565b90565b61071a90546106fc565b90565b90565b61072c6107319161065d565b61071d565b90565b61073e9054610720565b90565b90610750610755926055610615565b610647565b6107605f8201610676565b9161076c5f830161069d565b916107785f82016106c4565b91610785600183016106e8565b9161079260028201610710565b9161079f60038301610734565b916107ac60048201610734565b916107c560066107be60058501610734565b93016106e8565b90565b90565b6107d4906107c8565b9052565b61ffff1690565b6107e8906107d8565b9052565b90565b6107f8906107ec565b9052565b9694929099989795939161012088019a5f8901610818916104fd565b60208801610825916104fd565b60408701610832916104fd565b6060860161083f916107cb565b6080850161084c916107df565b60a08401610859916107ef565b60c08301610866916107ef565b60e08201610873916107ef565b61010001610880916107cb565b565b346108bd576108b961089e6108983660046105b1565b90610741565b956108b09997999591959492946103e4565b998a998a6107fc565b0390f35b6103ea565b90565b6108d96108d46108de926108c2565b6105de565b6107d8565b90565b6108ec612af86108c5565b90565b6108f76108e1565b90565b919061090d905f602085019401906107df565b565b3461093f5761091f36600461049f565b61093b61092a6108ef565b6109326103e4565b918291826108fa565b0390f35b6103ea565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156109885781359160018060401b03831161098357602001926020830284011161097e57565b61094c565b610948565b610944565b9190916040818403126109cc576109a6835f830161057f565b92602082013560018060401b0381116109c7576109c39201610950565b9091565b6103f2565b6103ee565b5f0190565b34610a05576109ef6109e936600461098d565b9161213b565b6109f76103e4565b80610a01816109d1565b0390f35b6103ea565b610a13816107c8565b03610a1a57565b5f80fd5b90503590610a2b82610a0a565b565b90602082820312610a4657610a43915f01610a1e565b90565b6103ee565b9190610a5e905f602085019401906107cb565b565b34610a9057610a8c610a7b610a76366004610a2d565b61217f565b610a836103e4565b91829182610a4b565b0390f35b6103ea565b9190604083820312610abd5780610ab1610aba925f8601610a1e565b9360200161057f565b90565b6103ee565b34610af157610adb610ad5366004610a95565b906121d3565b610ae36103e4565b80610aed816109d1565b0390f35b6103ea565b610b06906008610b0b93026104ae565b6106f5565b90565b90610b199154610af6565b90565b610b296001601090610b0e565b90565b34610b5c57610b3c36600461049f565b610b58610b47610b1c565b610b4f6103e4565b918291826108fa565b0390f35b6103ea565b34610b9057610b7a610b74366004610a95565b906121df565b610b826103e4565b80610b8c816109d1565b0390f35b6103ea565b90565b610bac610ba7610bb192610b95565b6105de565b6107d8565b90565b610bbf614650610b98565b90565b610bca610bb4565b90565b34610bfd57610bdd36600461049f565b610bf9610be8610bc2565b610bf06103e4565b918291826108fa565b0390f35b6103ea565b90602082820312610c1b57610c18915f0161057f565b90565b6103ee565b34610c4e57610c38610c33366004610c02565b61231d565b610c406103e4565b80610c4a816109d1565b0390f35b6103ea565b9190610c66905f602085019401906107ef565b565b34610c9857610c94610c83610c7e366004610c02565b6123ff565b610c8b6103e4565b91829182610c53565b0390f35b6103ea565b90565b610cb4610caf610cb992610c9d565b6105de565b6107d8565b90565b610cc7612710610ca0565b90565b610cd2610cbc565b90565b34610d0557610ce536600461049f565b610d01610cf0610cca565b610cf86103e4565b918291826108fa565b0390f35b6103ea565b610d1760016008906104d5565b90565b34610d4a57610d2a36600461049f565b610d46610d35610d0a565b610d3d6103e4565b9182918261050a565b0390f35b6103ea565b9190604083820312610d775780610d6b610d74925f86016105a2565b9360200161057f565b90565b6103ee565b90610d869061062b565b5f5260205260405f2090565b90610d9c90610609565b5f5260205260405f2090565b610dc1610dc692610dbc6058935f94610d7c565b610d92565b6104d5565b90565b34610dfa57610df6610de5610ddf366004610d4f565b90610da8565b610ded6103e4565b9182918261050a565b0390f35b6103ea565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e2b90610e03565b810190811060018060401b03821117610e4357604052565b610e0d565b90610e5b610e546103e4565b9283610e21565b565b60018060401b038111610e7957610e75602091610e03565b0190565b610e0d565b90825f939282370152565b90929192610e9e610e9982610e5d565b610e48565b93818552602085019082840111610eba57610eb892610e7e565b565b610dff565b9080601f83011215610edd57816020610eda93359101610e89565b90565b610944565b919091604081840312610f2057610efb835f830161057f565b92602082013560018060401b038111610f1b57610f189201610ebf565b90565b6103f2565b6103ee565b610f39610f33366004610ee2565b90612447565b610f416103e4565b80610f4b816109d1565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610f7b610f4f565b90565b34610fae57610f8e36600461049f565b610faa610f99610f73565b610fa16103e4565b91829182610a4b565b0390f35b6103ea565b34610fe357610fc336600461049f565b610fdf610fce6124be565b610fd66103e4565b91829182610a4b565b0390f35b6103ea565b90565b610fff610ffa61100492610fe8565b6105de565b6107d8565b90565b6110126130d4610feb565b90565b61101d611007565b90565b346110505761103036600461049f565b61104c61103b611015565b6110436103e4565b918291826108fa565b0390f35b6103ea565b346110855761106536600461049f565b6110816110706124f2565b6110786103e4565b91829182610455565b0390f35b6103ea565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6110b661108a565b90565b346110e9576110c936600461049f565b6110e56110d46110ae565b6110dc6103e4565b91829182610a4b565b0390f35b6103ea565b3461111e5761111a611109611104366004610c02565b612514565b6111116103e4565b9182918261050a565b0390f35b6103ea565b346111545761115061113f611139366004610d4f565b90612533565b6111476103e4565b9182918261050a565b0390f35b6103ea565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b611185611159565b90565b346111b85761119836600461049f565b6111b46111a361117d565b6111ab6103e4565b91829182610a4b565b0390f35b6103ea565b60ff1690565b6111d39060086111d893026104ae565b6111bd565b90565b906111e691546111c3565b90565b6111f560055f906111db565b90565b346112285761120836600461049f565b6112246112136111e9565b61121b6103e4565b91829182610455565b0390f35b6103ea565b90565b61124461123f6112499261122d565b6105de565b6104f2565b90565b611258624f1a00611230565b90565b61126361124c565b90565b346112965761127636600461049f565b61129261128161125b565b6112896103e4565b9182918261050a565b0390f35b6103ea565b90565b6112b26112ad6112b79261129b565b6105de565b6107ec565b90565b6112c76305f5e10061129e565b90565b6112d26112ba565b90565b34611305576112e536600461049f565b6113016112f06112ca565b6112f86103e4565b91829182610c53565b0390f35b6103ea565b6113145f806104d5565b90565b346113475761132736600461049f565b61134361133261130a565b61133a6103e4565b9182918261050a565b0390f35b6103ea565b6113559061055f565b9052565b919061136c905f6020850194019061134c565b565b3461139e5761139a611389611384366004610c02565b6125a1565b6113916103e4565b91829182611359565b0390f35b6103ea565b346113d3576113cf6113be6113b9366004610425565b6125c0565b6113c66103e4565b91829182611359565b0390f35b6103ea565b34611409576114056113f46113ee366004610a95565b906125eb565b6113fc6103e4565b91829182610455565b0390f35b6103ea565b3461143e5761143a611429611424366004610c02565b61261d565b6114316103e4565b9182918261050a565b0390f35b6103ea565b90916060828403126114785761147561145e845f850161057f565b9361146c81602086016105a2565b9360400161057f565b90565b6103ee565b346114ae576114aa611499611493366004611443565b91612871565b6114a16103e4565b91829182610c53565b0390f35b6103ea565b6114c9906114c46056915f92610d92565b6104d5565b90565b346114fc576114f86114e76114e2366004610c02565b6114b3565b6114ef6103e4565b9182918261050a565b0390f35b6103ea565b61151a61151f926115156057935f94610d7c565b610d92565b6104d5565b90565b346115535761154f61153e611538366004610d4f565b90611501565b6115466103e4565b9182918261050a565b0390f35b6103ea565b90565b61156f61156a61157492611558565b6105de565b6104f2565b90565b61158362278d0061155b565b90565b61158e611577565b90565b346115c1576115a136600461049f565b6115bd6115ac611586565b6115b46103e4565b9182918261050a565b0390f35b6103ea565b90565b5f1b90565b6115e26115dd6115e7926115c6565b6115c9565b6107c8565b90565b6115f35f6115ce565b90565b6115fe6115ea565b90565b346116315761161136600461049f565b61162d61161c6115f6565b6116246103e4565b91829182610a4b565b0390f35b6103ea565b61163f906104f2565b9052565b61164c906107c8565b9052565b611659906107d8565b9052565b611666906107ec565b9052565b906101008061170b936116835f8201515f860190611636565b61169560208201516020860190611636565b6116a760408201516040860190611636565b6116b960608201516060860190611643565b6116cb60808201516080860190611650565b6116dd60a082015160a086019061165d565b6116ef60c082015160c086019061165d565b61170160e082015160e086019061165d565b0151910190611643565b565b9190611721905f610120850194019061166a565b565b346117545761175061173f6117393660046105b1565b90612a1f565b6117476103e4565b9182918261170d565b0390f35b6103ea565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b611785611759565b90565b346117b85761179836600461049f565b6117b46117a361177d565b6117ab6103e4565b91829182610a4b565b0390f35b6103ea565b90565b6117d46117cf6117d9926117bd565b6105de565b6107d8565b90565b6117e76138a46117c0565b90565b6117f26117dc565b90565b346118255761180536600461049f565b6118216118106117ea565b6118186103e4565b918291826108fa565b0390f35b6103ea565b90565b61184161183c6118469261182a565b6105de565b6107ec565b90565b61185a670de0b6b3a764000061182d565b90565b611865611849565b90565b346118985761187836600461049f565b61189461188361185d565b61188b6103e4565b91829182610c53565b0390f35b6103ea565b60018060401b0381116118b9576118b5602091610e03565b0190565b610e0d565b906118d06118cb8361189d565b610e48565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61190660056118be565b90611913602083016118d5565b565b61191d6118fc565b90565b611928611915565b90565b611933611920565b90565b5190565b60209181520190565b90825f9392825e0152565b61196d61197660209361197b9361196481611936565b9384809361193a565b95869101611943565b610e03565b0190565b6119949160208201915f81840391015261194e565b90565b346119c7576119a736600461049f565b6119c36119b261192b565b6119ba6103e4565b9182918261197f565b0390f35b6103ea565b6119d860075f906111db565b90565b34611a0b576119eb36600461049f565b611a076119f66119cc565b6119fe6103e4565b91829182610455565b0390f35b6103ea565b90565b611a27611a22611a2c92611a10565b6105de565b6107d8565b90565b611a3a614e20611a13565b90565b611a45611a2f565b90565b34611a7857611a5836600461049f565b611a74611a63611a3d565b611a6b6103e4565b918291826108fa565b0390f35b6103ea565b90565b611a94611a8f611a9992611a7d565b6105de565b6107ec565b90565b611aa66001611a80565b90565b611ab1611a9c565b90565b34611ae457611ac436600461049f565b611ae0611acf611aa9565b611ad76103e4565b91829182610c53565b0390f35b6103ea565b611af55f6018906104d5565b90565b34611b2857611b0836600461049f565b611b24611b13611ae9565b611b1b6103e4565b9182918261050a565b0390f35b6103ea565b90602080611b4f93611b455f8201515f86019061165d565b015191019061165d565b565b9190611b64905f60408501940190611b2d565b565b34611b9757611b93611b82611b7c366004610d4f565b90612af6565b611b8a6103e4565b91829182611b51565b0390f35b6103ea565b34611bcd57611bc9611bb8611bb2366004610d4f565b90612b1e565b611bc06103e4565b9182918261050a565b0390f35b6103ea565b611bdb816107ec565b03611be257565b5f80fd5b90503590611bf382611bd2565b565b611bfe816107d8565b03611c0557565b5f80fd5b90503590611c1682611bf5565b565b608081830312611c5957611c2e825f830161057f565b92611c56611c3f8460208501611be6565b93611c4d8160408601611be6565b93606001611c09565b90565b6103ee565b34611c9057611c7a611c71366004611c18565b92919091613312565b611c826103e4565b80611c8c816109d1565b0390f35b6103ea565b90565b611cac611ca7611cb192611c95565b6105de565b6104f2565b90565b611cc06276a700611c98565b90565b611ccb611cb4565b90565b34611cfe57611cde36600461049f565b611cfa611ce9611cc3565b611cf16103e4565b9182918261050a565b0390f35b6103ea565b90565b611d1a611d15611d1f92611d03565b6105de565b6104f2565b90565b611d2e62127500611d06565b90565b611d39611d22565b90565b34611d6c57611d4c36600461049f565b611d68611d57611d31565b611d5f6103e4565b9182918261050a565b0390f35b6103ea565b34611da057611d8a611d84366004610a95565b9061334a565b611d926103e4565b80611d9c816109d1565b0390f35b6103ea565b611db160015f906104d5565b90565b34611de457611dc436600461049f565b611de0611dcf611da5565b611dd76103e4565b9182918261050a565b0390f35b6103ea565b90565b611e00611dfb611e0592611de9565b6105de565b6107ec565b90565b611e18662386f26fc10000611dec565b90565b611e23611e08565b90565b34611e5657611e3636600461049f565b611e52611e41611e1b565b611e496103e4565b91829182610c53565b0390f35b6103ea565b90602082820312611e8a575f82013560018060401b038111611e8557611e819201610950565b9091565b6103f2565b6103ee565b34611ebe57611ea8611ea2366004611e5b565b906133ab565b611eb06103e4565b80611eba816109d1565b0390f35b6103ea565b611ed7611ed2611edc92610c9d565b6105de565b6107ec565b90565b611eea612710611ec3565b90565b611ef5611edf565b90565b34611f2857611f0836600461049f565b611f24611f13611eed565b611f1b6103e4565b91829182610c53565b0390f35b6103ea565b34611f5c57611f46611f403660046105b1565b906134dc565b611f4e6103e4565b80611f58816109d1565b0390f35b6103ea565b90565b611f78611f73611f7d92611f61565b6105de565b6104f2565b90565b611f8c62ed4e00611f64565b90565b611f97611f80565b90565b34611fca57611faa36600461049f565b611fc6611fb5611f8f565b611fbd6103e4565b9182918261050a565b0390f35b6103ea565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390565b611ffb611fcf565b90565b3461202e5761200e36600461049f565b61202a612019611ff3565b6120216103e4565b91829182610a4b565b0390f35b6103ea565b61203f5f6008906104d5565b90565b346120725761205236600461049f565b61206e61205d612033565b6120656103e4565b9182918261050a565b0390f35b6103ea565b5f90565b612083612077565b508061209e612098637965db0b60e01b6103f6565b916103f6565b149081156120ab575b5090565b6120b591506134ed565b5f6120a7565b60018060401b0381116120d15760208091020190565b610e0d565b909291926120eb6120e6826120bb565b610e48565b938185526020808601920283019281841161212857915b83831061210f5750505050565b6020809161211d8486610416565b815201920191612102565b61094c565b6121389136916120d6565b90565b612157926121519161214b613525565b9261212d565b90613560565b565b5f90565b612166906107c8565b90565b906121739061215d565b5f5260205260405f2090565b60016121a06121a692612190612159565b505f61219a6136d4565b01612169565b016106e8565b90565b906121c4916121bf6121ba8261217f565b6136f8565b6121c6565b565b906121d09161370c565b50565b906121dd916121a9565b565b90806121fa6121f46121ef6137c3565b61055f565b9161055f565b0361220b57612208916137d0565b50565b5f63334bd91960e11b815280612223600482016109d1565b0390fd5b612230906105e1565b90565b61223c90612227565b90565b612248906105fd565b90565b60e01b90565b9050519061225e82610402565b565b90929192612275612270826120bb565b610e48565b93818552602080860192028301928184116122b257915b8383106122995750505050565b602080916122a78486612251565b81520192019161228c565b61094c565b9080601f830112156122d5578160206122d293519101612260565b90565b610944565b90602082820312612308575f82015160018060401b0381116123035761230092016122b7565b90565b6103f2565b6103ee565b6123156103e4565b3d5f823e3d90fd5b612325613525565b6123505f61233a61233584612233565b61223f565b636e25b978906123486103e4565b93849261224b565b82528180612360600482016109d1565b03915afa80156123e05761237c915f916123be575b5082613560565b6123a67f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d91610609565b906123af6103e4565b806123b9816109d1565b0390a2565b6123da91503d805f833e6123d28183610e21565b8101906122da565b5f612375565b61230d565b5f90565b906123f390610609565b5f5260205260405f2090565b61241661241b9161240e6123e5565b5060196123e9565b610734565b90565b906124309161242b613889565b612432565b565b906124459161244081613943565b61399f565b565b906124519161241e565b565b6124649061245f613a9d565b6124b2565b90565b90565b61247e61247961248392612467565b6115c9565b6107c8565b90565b6124af7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61246a565b90565b506124bb612486565b90565b6124ce6124c9612159565b612453565b90565b6124dd6124e29161065d565b6111bd565b90565b6124ef90546124d1565b90565b6124fa612077565b5061250d5f612507613afb565b016124e5565b90565b5f90565b61252b61253091612523612510565b506056610d92565b610676565b90565b6125589161254e61255392612546612510565b506057610d7c565b610d92565b610676565b90565b5f90565b9061256990610609565b5f5260205260405f2090565b60018060a01b031690565b61258c6125919161065d565b612575565b90565b61259e9054612580565b90565b6125b86125bd916125b061255b565b50600661255f565b612594565b90565b6125d2906125cc61255b565b50613b35565b90565b906125df90610609565b5f5260205260405f2090565b61261a915f61260f612615936125ff612077565b50826126096136d4565b01612169565b016125d5565b6124e5565b90565b6126346126399161262c612510565b506021610d92565b610676565b90565b90612646906104f2565b9052565b90612654906107c8565b9052565b90612662906107d8565b9052565b90612670906107ec565b9052565b61267f610120610e48565b90565b906127606127566006612693612674565b946126aa6126a25f8301610676565b5f880161263c565b6126c16126b85f830161069d565b6020880161263c565b6126d86126cf5f83016106c4565b6040880161263c565b6126f06126e7600183016106e8565b6060880161264a565b6127086126ff60028301610710565b60808801612658565b61272061271760038301610734565b60a08801612666565b61273861272f60048301610734565b60c08801612666565b61275061274760058301610734565b60e08801612666565b016106e8565b610100840161264a565b565b61276b90612682565b90565b61277890516104f2565b90565b61278f61278a612794926115c6565b6105de565b6104f2565b90565b6127ab6127a66127b0926115c6565b6105de565b6107ec565b90565b6127bd90516107c8565b90565b6127ca90516107ec565b90565b634e487b7160e01b5f52601160045260245ffd5b6127f06127f6919392936107ec565b926107ec565b820391821161280157565b6127cd565b61281561281b919392936107ec565b926107ec565b916128278382026107ec565b92818404149015171561283657565b6127cd565b634e487b7160e01b5f52601260045260245ffd5b61285b612861916107ec565b916107ec565b90811561286c570490565b61283b565b9291909261289a6128956128836123e5565b9561289060558590610615565b610647565b612762565b916128a65f840161276e565b6128b86128b25f61277b565b916104f2565b1461297957906128d591906128cf606085016127b3565b91613c69565b90816128e96128e35f612797565b916107ec565b14612969576128fa60c082016127c0565b61291761291161290c60e085016127c0565b6107ec565b916107ec565b11612921575b5050565b6129619293509061294d8261294760e061294060c061295397016127c0565b92016127c0565b906127e1565b90612806565b61295b611849565b9061284f565b905f8061291d565b505090506129765f612797565b90565b50505090506129875f612797565b90565b5f90565b5f90565b5f90565b5f90565b6129a2612674565b90602080808080808080808a6129b661298a565b8152016129c161298a565b8152016129cc61298a565b8152016129d761298e565b8152016129e2612992565b8152016129ed612996565b8152016129f8612996565b815201612a03612996565b815201612a0e61298e565b81525050565b612a1c61299a565b90565b612a4491612a3a612a3f92612a32612a14565b506055610615565b610647565b612762565b90565b612a516040610e48565b90565b612a5c612a47565b9060208083612a69612996565b815201612a74612996565b81525050565b612a82612a54565b90565b90612a8f9061062b565b5f5260205260405f2090565b90612aa590610609565b5f5260205260405f2090565b90612ae8612adf6001612ac2612a47565b94612ad9612ad15f8301610734565b5f8801612666565b01610734565b60208401612666565b565b612af390612ab1565b90565b612b1b91612b11612b1692612b09612a7a565b506010612a85565b612a9b565b612aea565b90565b612b4391612b39612b3e92612b31612510565b506058610d7c565b610d92565b610676565b90565b612b52612b5791610683565b6111bd565b90565b612b649054612b46565b90565b612b7b612b76612b8092611a7d565b6105de565b6104f2565b90565b612b8c906105fd565b90565b90612ba060018060401b03916115c9565b9181191691161790565b90565b90612bc2612bbd612bc99261062b565b612baa565b8254612b8f565b9055565b60401b90565b90612be260ff60401b91612bcd565b9181191691161790565b612bf590610443565b90565b90565b90612c10612c0b612c1792612bec565b612bf8565b8254612bd3565b9055565b612c2490612b67565b9052565b9190612c3b905f60208501940190612c1b565b565b909192612c48613d58565b93612c5d612c575f8701612b5a565b15610443565b93612c695f8701610676565b80612c7c612c765f61277b565b916104f2565b1480612d96575b90612c97612c916001612b67565b916104f2565b1480612d6e575b612ca9909115610443565b9081612d5d575b50612d4157612cd993612cce612cc66001612b67565b5f8901612bad565b85612d2f575b613154565b612ce1575b50565b612cee905f809101612bfb565b6001612d267fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d1d6103e4565b91829182612c28565b0390a15f612cde565b612d3c60015f8901612bfb565b612cd4565b5f63f92ee8a960e01b815280612d59600482016109d1565b0390fd5b612d68915015610443565b5f612cb0565b50612ca9612d7b30612b83565b3b612d8e612d885f612797565b916107ec565b149050612c9e565b5085612c83565b612db1612dac612db6926115c6565b6105de565b610554565b90565b612dc290612d9d565b90565b612dcf6040610e48565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612df057565b612dd2565b90612dff82612de6565b565b90612e0b90612df5565b9052565b90612e199061055f565b9052565b612e31612e2c612e36926107ec565b6105de565b6107d8565b90565b612e4360c0610e48565b90565b90612e5090610443565b9052565b90612e5e9061215d565b5f5260205260405f2090565b612e749051610443565b90565b90612e8360ff916115c9565b9181191691161790565b90612ea2612e9d612ea992612bec565b612bf8565b8254612e77565b9055565b612eb790516107d8565b90565b60081b90565b90612ece62ffff0091612eba565b9181191691161790565b612eec612ee7612ef1926107d8565b6105de565b6107d8565b90565b90565b90612f0c612f07612f1392612ed8565b612ef4565b8254612ec0565b9055565b90612f235f19916115c9565b9181191691161790565b612f41612f3c612f46926107ec565b6105de565b6107ec565b90565b90565b90612f61612f5c612f6892612f2d565b612f49565b8254612f17565b9055565b90612ffa60a0600461300094612f8f5f8201612f895f8801612e6a565b90612e8d565b612fa75f8201612fa160208801612ead565b90612ef7565b612fc060018201612fba604088016127c0565b90612f4c565b612fd960028201612fd3606088016127c0565b90612f4c565b612ff260038201612fec608088016127c0565b90612f4c565b0192016127c0565b90612f4c565b565b9061300c91612f6c565b565b60801b90565b9061302461ffff60801b9161300e565b9181191691161790565b9061304361303e61304a92612ed8565b612ef4565b8254613014565b9055565b90565b61306561306061306a9261304e565b6105de565b6104f2565b90565b613078615460613051565b90565b90613090600160401b600160801b0391612bcd565b9181191691161790565b906130af6130aa6130b69261062b565b612baa565b825461307b565b9055565b90565b6130d16130cc6130d6926130ba565b6105de565b6104f2565b90565b6130e3601c6130bd565b90565b60c01b90565b906130fe60018060c01b0319916130e6565b9181191691161790565b9061311d6131186131249261062b565b612baa565b82546130ec565b9055565b90565b61313f61313a61314492613128565b6105de565b6104f2565b90565b613151603861312b565b90565b91909161315f613d86565b613167613d9a565b61316f613dc0565b613177613de6565b61317f6115ea565b816131899161370c565b50613192611159565b8161319c9161370c565b506131a5611759565b816131af9161370c565b506131b8611fcf565b906131c29161370c565b505f806131ce90612db9565b6131d6612dc5565b915f8301906131e491612e01565b60208201906131f291612e0f565b6131fb90613e50565b90600192905f905f9261320c611edf565b61321590612e1d565b61321d612e39565b965f88019061322b91612e46565b602087019061323991612658565b604086019061324791612666565b606085019061325591612666565b61325e90612797565b608084019061326c91612666565b61327590612797565b60a083019061328391612666565b60029061328f91612e54565b9061329991613002565b60016132a6906005612e8d565b6132b190600161302e565b60016132bc90612b67565b6132c6905f612bad565b6132ce61306d565b6132d8905f61309a565b6132e06130d9565b6132ea905f613108565b6132f26130d9565b6132fd906001612bad565b613305613147565b61331090600161309a565b565b9061331e939291612c3d565b565b9061333b916133366133318261217f565b6136f8565b61333d565b565b90613347916137d0565b50565b9061335491613320565b565b600161336291016107ec565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561338d576020020190565b613369565b3561339c81610402565b90565b6133a8906103f6565b90565b9190916133b6613525565b6133bf5f612797565b5b806133dd6133d76133d2858890613365565b6107ec565b916107ec565b10156134615761345c906134036133fe6133f98588859161337d565b613392565b613f17565b6134176134128487849161337d565b613392565b6134417fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb9161339f565b9061344a6103e4565b80613454816109d1565b0390a2613356565b6133c0565b50509050565b906134819161347c613477611159565b6136f8565b613483565b565b6134988261349360218490610d92565b612bad565b6134d76134c57f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f3592610609565b926134ce6103e4565b9182918261050a565b0390a2565b906134e691613467565b565b613f2d565b6134f5612077565b5061350f6135096301ffc9a760e01b6103f6565b916103f6565b1490565b61352361351e611fcf565b6136f8565b565b61352d613513565b565b5190565b9061353d8261352f565b81101561354e576020809102010190565b613369565b61355d90516103f6565b90565b91908261357d6135776135725f612db9565b61055f565b9161055f565b146136cf57823b6135966135905f612797565b916107ec565b146136c9576135a45f612797565b5b806135c06135ba6135b58561352f565b6107ec565b916107ec565b10156136c3576135e16135dc6135d7848490613533565b613553565b613b35565b806135fc6135f66135f15f612db9565b61055f565b9161055f565b1415806136a8575b613691575061368c9061362a61362361361e858490613533565b613553565b8690614034565b61363d613638848390613533565b613553565b8561367161366b7f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b399361339f565b91610609565b9161367a6103e4565b80613684816109d1565b0390a3613356565b6135a5565b6136a361369e8385613533565b613553565b613fdb565b50806136bc6136b68761055f565b9161055f565b1415613604565b50509050565b82613f8c565b613f70565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61370a906137046137c3565b9061406d565b565b613714612077565b5061371d6136d4565b61373161372b8385906125eb565b15610443565b5f146137bc5761375b906137565f61374e81600194018690612169565b0185906125d5565b612e8d565b906137646137c3565b906137a161379b6137957f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9561215d565b92610609565b92610609565b926137aa6103e4565b806137b4816109d1565b0390a4600190565b5050505f90565b6137cb61255b565b503390565b6137d8612077565b506137e16136d4565b6137ec8284906125eb565b5f1461387657613815906138105f613808818094018690612169565b0185906125d5565b612e8d565b9061381e6137c3565b9061385b61385561384f7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9561215d565b92610609565b92610609565b926138646103e4565b8061386e816109d1565b0390a4600190565b5050505f90565b613886906105fd565b90565b6138923061387d565b6138c46138be7f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b1480156138ee575b6138d257565b5f63703e46dd60e11b8152806138ea600482016109d1565b0390fd5b506138f76140a8565b6139296139237f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b14156138cc565b5061394161393c611fcf565b6136f8565b565b61394c90613930565b565b613957906105e1565b90565b6139639061394e565b90565b61396f906105fd565b90565b9050519061397f82610a0a565b565b9060208282031261399a57613997915f01613972565b90565b6103ee565b91906139cd60206139b76139b28661395a565b613966565b6352d1902d906139c56103e4565b93849261224b565b825281806139dd600482016109d1565b03915afa80915f92613a6d575b50155f14613a1e5750509060016139ff57505b565b613a1a905f918291634c9c8ce360e01b835260048301611359565b0390fd5b9283613a39613a33613a2e612486565b6107c8565b916107c8565b03613a4e57613a499293506140ce565b6139fd565b613a69845f918291632a87526960e21b835260048301610a4b565b0390fd5b613a8f91925060203d8111613a96575b613a878183610e21565b810190613981565b905f6139ea565b503d613a7d565b613aa63061387d565b613ad8613ad27f000000000000000000000000000000000000000000000000000000000000000061055f565b9161055f565b03613adf57565b5f63703e46dd60e11b815280613af7600482016109d1565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b299061339f565b5f5260205260405f2090565b613b4c613b5191613b4461255b565b50601f613b1f565b612594565b90565b90613b5e90610609565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b8381613b6d565b821015613b9d57613b95600391613b71565b910201905f90565b613369565b90565b60ff1690565b613bb7613bbc9161065d565b613ba5565b90565b613bc99054613bab565b90565b60081c90565b613bde613be391613bcc565b612575565b90565b613bf09054613bd2565b90565b613bfd6040610e48565b90565b90613c36613c2d5f613c10613bf3565b94613c27613c1f838301613bbf565b838801612e01565b01613be6565b60208401612e0f565b565b613c4190613c00565b90565b613c53613c59919392936107ec565b926107ec565b8201809211613c6457565b6127cd565b929192613c87613c82613c7a6123e5565b926014613b54565b613b6a565b93613c9185613b6d565b93613c9b5f612797565b5b80613caf613ca9886107ec565b916107ec565b1015613d4f57613cc9613cc3888390613b7a565b50613ba2565b613cd560018201612594565b613ce7613ce18861055f565b9161055f565b1480613d22575b613d02575b50613cfd90613356565b613c9c565b613cfd9194613d155f613d1b9301610734565b90613c44565b9390613cf3565b50613d37613d3260028301613c38565b613e50565b613d49613d43866107c8565b916107c8565b14613cee565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d84614157565b565b613d8e613d7c565b565b613d98614157565b565b613da2613d90565b565b613dac614157565b613db4613db6565b565b613dbe6141b2565b565b613dc8613da4565b565b613dd2614157565b613dda613ddc565b565b613de46141f8565b565b613dee613dca565b565b613dfa9051612df5565b90565b613e07905161055f565b90565b613e1390612df5565b90565b613e1f90613e0a565b9052565b916020613e44929493613e3d60408201965f830190613e16565b019061134c565b565b60200190565b5190565b613e58612159565b50613e9a613e736020613e6c5f8501613df0565b9301613dfd565b91613e8b613e7f6103e4565b93849260208401613e23565b60208201810382520382610e21565b613eac613ea682613e4c565b91613e46565b2090565b1b90565b91906008613ed4910291613ece60018060a01b0384613eb0565b92613eb0565b9181191691161790565b90565b9190613ef7613ef2613eff93610609565b613ede565b908354613eb4565b9055565b613f1591613f0f61255b565b91613ee1565b565b5f613f26613f2b92601f613b1f565b613f03565b565b613f4063ffffffff60e01b5f3516613b35565b80613f5b613f55613f505f612db9565b61055f565b9161055f565b036142365763ffffffff60e01b5f3516614217565b5f63d92e233d60e01b815280613f88600482016109d1565b0390fd5b613fa7905f9182916322a2d07b60e21b835260048301611359565b0390fd5b613fb4906103f6565b9052565b916020613fd9929493613fd260408201965f830190613fab565b019061134c565b565b613ff55f9283926310ae11a960e31b845260048401613fb8565b0390fd5b9061400a60018060a01b03916115c9565b9181191691161790565b9061402961402461403092610609565b613ede565b8254613ff9565b9055565b6140436140489291601f613b1f565b614014565b565b91602061406b92949361406460408201965f83019061134c565b01906107cb565b565b9061408261407c8383906125eb565b15610443565b61408a575050565b6140a45f92839263e2517d3f60e01b84526004840161404a565b0390fd5b6140b061255b565b506140cb5f6140c56140c0612486565b614254565b01612594565b90565b906140d882614257565b816141037fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610609565b9061410c6103e4565b80614116816109d1565b0390a261412281613e4c565b61413461412e5f612797565b916107ec565b115f146141485761414491614327565b505b565b50506141526142ac565b614146565b614168614162614356565b15610443565b61416e57565b5f631afcd79f60e31b815280614186600482016109d1565b0390fd5b614192614157565b61419a61419c565b565b6141b06141a7613afb565b5f809101612e8d565b565b6141ba61418a565b565b6141c4614157565b6141cc6141db565b565b6141d86001611a80565b90565b6141f66141e6614374565b5f6141ef6141ce565b9101612f4c565b565b6142006141bc565b565b9190614215905f60208501940190613fab565b565b614232905f91829163c2a825f560e01b835260048301614202565b0390fd5b5f8091368280378136915af43d5f803e5f14614250573d5ff35b3d5ffd5b90565b803b61426b6142655f612797565b916107ec565b1461428d5761428b905f614285614280612486565b614254565b01614014565b565b6142a8905f918291634c9c8ce360e01b835260048301611359565b0390fd5b346142bf6142b95f612797565b916107ec565b116142c657565b5f63b398979f60e01b8152806142de600482016109d1565b0390fd5b606090565b906142f96142f483610e5d565b610e48565b918252565b3d5f146143195761430e3d6142e7565b903d5f602084013e5b565b6143216142e2565b90614317565b5f80614353936143356142e2565b508390602081019051915af49061434a6142fe565b90919091614398565b90565b61435e612077565b506143715f61436b613d58565b01612b5a565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143ac906143a56142e2565b5015610443565b5f146143b8575061441c565b6143c182613e4c565b6143d36143cd5f612797565b916107ec565b1480614401575b6143e2575090565b6143fd905f918291639996b31560e01b835260048301611359565b0390fd5b50803b6144166144105f612797565b916107ec565b146143da565b61442581613e4c565b6144376144315f612797565b916107ec565b115f1461444657805190602001fd5b5f63d6bda27560e01b81528061445e600482016109d1565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:4613:56:-:0;;;;;;;;;-1:-1:-1;1033:4613:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4836:30:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4797:70:60:-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;1033:4613:56:-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2390:52:54:-;2436:6;;;:::i;:::-;2390:52;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;6202:35:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2568:53:54:-;2615:6;;;:::i;:::-;2568:53;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2337:47:54:-;2378:6;;;:::i;:::-;2337:47;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5611:33:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;5194:72:60:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;3819:64:54;3858:25;3819:64;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2448:53:54:-;2495:6;;;:::i;:::-;2448:53;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3971:62:54:-;4009:24;3971:62;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3753:60:54:-;3790:23;3753:60;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;7722:25:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1742:48:54:-;1783:7;;;:::i;:::-;1742:48;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1557:44:54:-;1598:3;;;:::i;:::-;1557:44;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4640:26:54:-;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4917:45:60:-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5041:70:60:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1689:47:54:-;1729:7;;;:::i;:::-;1689:47;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2317:49:22:-;2362:4;;;:::i;:::-;2317:49;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3889:76:54:-;3934:31;3889:76;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2507:55:54:-;2556:6;;;:::i;:::-;2507:55;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1059:40:54:-;1095:4;;;:::i;:::-;1059:40;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:24:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8602:27:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2980:57:54:-;3031:6;;;:::i;:::-;2980:57;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1607:42:54:-;1648:1;;;:::i;:::-;1607:42;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5414:37:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1796:50:54:-;1839:7;;;:::i;:::-;1796:50;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6641:56:54:-;6690:7;;;:::i;:::-;6641:56;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;5518:34:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;3220:46:54:-;3262:4;;;:::i;:::-;3220:46;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1105:48:54:-;1147:6;;;:::i;:::-;1105:48;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1852:49:54:-;1893:8;;;:::i;:::-;1852:49;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4039:66:54:-;4079:26;4039:66;:::o;:::-;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4743:27:54:-;;;;;;:::i;:::-;;:::o;1033:4613:56:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;3443:202:22:-;3528:4;;:::i;:::-;3551:11;;:47;;3566:32;;;3551:47;:::i;:::-;;;:::i;:::-;;:87;;;;;3443:202;3544:94;;:::o;3551:87::-;3602:36;3626:11;;3602:36;:::i;:::-;3551:87;;;1033:4613:56;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;986:179:30:-;1122:36;986:179;1122:36;986:179;;;:::i;:::-;1148:9;1122:36;:::i;:::-;;;:::i;:::-;986:179::o;1033:4613:56:-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4759:191:22:-;4919:24;:14;:24;4759:191;4824:7;;:::i;:::-;4876:26;4919:8;4876:26;;:::i;:::-;4919:8;:14;:::i;:::-;:24;;:::i;:::-;4912:31;:::o;3149:76::-;;3217:1;3149:76;3202:4;5320:18;5333:4;5320:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5246:136::-;;5350:25;5246:136;5350:25;:::i;:::-;;5246:136::o;:::-;;;;;:::i;:::-;:::o;6348:245::-;;6441:18;:34;;6463:12;;:::i;:::-;6441:34;:::i;:::-;;;:::i;:::-;;6437:102;;6549:37;6561:4;6549:37;:::i;:::-;;6348:245::o;6437:102::-;6498:30;;;;;;;;;;;;:::i;:::-;;;;1033:4613:56;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;668:256:30;;;:::i;:::-;797:34;;:32;:22;813:5;797:22;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;867:12;797:34;;;;;668:256;766:65;860:5;867:12;:::i;:::-;895:22;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;668:256::o;797:34::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1033:4613:56:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;12525:122:59:-;12617:23;;12525:122;12591:7;;:::i;:::-;12617:16;;:23;:::i;:::-;;:::i;:::-;12610:30;:::o;2624:62:24:-;;2678:1;2624:62;;;:::i;:::-;2678:1;:::i;:::-;2624:62::o;4161:214::-;;4363:4;4161:214;4294:17;;;:::i;:::-;4363:4;:::i;:::-;4161:214::o;:::-;;;;;:::i;:::-;:::o;2892:72::-;2956:1;2892:72;;;:::i;:::-;2956:1;:::i;:::-;2892:72;:::o;1033:4613:56:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;763:114:8:-;811:66;;;:::i;:::-;763:114;:::o;3708:134:24:-;3803:32;;;:::i;:::-;3796:39;:::o;3708:134::-;3777:7;;;:::i;:::-;;:::i;:::-;3708:134;:::o;1033:4613:56:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:26:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;1033:4613:56:-;;;:::o;30689:117:60:-;30778:21;;30689:117;30753:6;;:::i;:::-;30778:11;;:21;:::i;:::-;;:::i;:::-;30771:28;:::o;31245:162::-;31362:38;31245:162;31362:28;:38;31245:162;31337:6;;:::i;:::-;31362:17;;:28;:::i;:::-;:38;:::i;:::-;;:::i;:::-;31355:45;:::o;1033:4613:56:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;16785:117:55:-;16874:21;;16785:117;16848:7;;:::i;:::-;16874:14;;:21;:::i;:::-;;:::i;:::-;16867:28;:::o;1560:129:30:-;1652:30;1560:129;1626:7;;:::i;:::-;1673:8;1652:30;:::i;:::-;1645:37;:::o;1033:4613:56:-;;;;;:::i;:::-;;;;;;;;;:::o;3732:207:22:-;3901:31;3732:207;3901:22;:14;:31;3732:207;3809:4;;:::i;:::-;3858:26;;;;:::i;:::-;3901:8;:14;:::i;:::-;:22;:31;:::i;:::-;;:::i;:::-;3894:38;:::o;7400:147:60:-;7504:36;;7400:147;7479:6;;:::i;:::-;7504:26;;:36;:::i;:::-;;:::i;:::-;7497:43;:::o;1033:4613:56:-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29177:783:60:-;;;;;29365:59;29393:31;29331:18;;:::i;:::-;29393:12;:22;:12;29406:8;29393:22;;:::i;:::-;:31;:::i;:::-;29365:59;:::i;:::-;29438:6;:12;;:6;:12;;:::i;:::-;:17;;29454:1;29438:17;:::i;:::-;;;:::i;:::-;;29434:31;;29561:9;29525:74;29561:9;29572:8;29582:16;;:6;:16;;:::i;:::-;29525:74;;:::i;:::-;29613:15;;:20;;29632:1;29613:20;:::i;:::-;;;:::i;:::-;;29609:34;;29737:25;;:6;:25;;:::i;:::-;:52;;29765:24;;:6;:24;;:::i;:::-;29737:52;:::i;:::-;;;:::i;:::-;;29733:221;;29177:783;;;:::o;29733:221::-;29903:40;29824:6;;;;:52;:6;29852:24;;29824:25;;29904:26;29824:6;:25;;:::i;:::-;29852:6;:24;;:::i;:::-;29824:52;;:::i;:::-;29904:26;;:::i;:::-;29934:9;;:::i;:::-;29903:40;;:::i;:::-;29733:221;;;;;29609:34;29642:1;;;;29635:8;29642:1;29635:8;:::i;:::-;;:::o;29434:31::-;29464:1;;;;;29457:8;29464:1;29457:8;:::i;:::-;;:::o;1033:4613:56:-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;30853:156:60:-;30964:38;30853:156;30971:22;:31;30853:156;30934:18;;:::i;:::-;30971:12;;:22;:::i;:::-;:31;:::i;:::-;30964:38;:::i;:::-;;:::o;1033:4613:56:-;;;;:::i;:::-;;:::o;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;33798:154:60:-;33913:32;33798:154;33920:15;:25;33798:154;33872:29;;:::i;:::-;33920:8;;:15;:::i;:::-;:25;:::i;:::-;33913:32;:::i;:::-;;:::o;31663:170::-;31784:42;31663:170;31784:32;:42;31663:170;31759:6;;:::i;:::-;31784:19;;:32;:::i;:::-;:42;:::i;:::-;;:::i;:::-;31777:49;:::o;1033:4613:56:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:23:-;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1033:4613:56;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1033:4613:56;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;826:56:29:-;876:6;;;:::i;:::-;826:56;:::o;876:6::-;;;1033:4613:56;876:6:29;;1033:4613:56;876:6:29;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;954:52::-;1004:2;;;:::i;:::-;954:52;:::o;1004:2::-;;;;:::o;:::-;;;1033:4613:56;1004:2:29;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1074:51::-;1123:2;;;:::i;:::-;1074:51;:::o;1648:1495:56:-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2003:18;;:::i;:::-;2023:5;1992:37;;;:::i;:::-;;2050:10;;:::i;:::-;2062:5;2039:29;;;:::i;:::-;;2089:18;;:::i;:::-;2109:5;2078:37;;;:::i;:::-;;2136:13;;:::i;:::-;2151:5;2125:32;;;:::i;:::-;;2246:22;2278:1;2270:10;;;:::i;:::-;2234:47;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2223:59;;;:::i;:::-;2361:4;;2397:22;2448:19;2493:1;2525;;2630:15;;;:::i;:::-;2623:23;;;:::i;:::-;2320:337;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;2292:13;2306:10;2292:25;;;:::i;:::-;:365;;;;:::i;:::-;2683:4;2667:20;;;;:::i;:::-;2698:46;;;;:::i;:::-;2769:1;2754:16;;;:::i;:::-;;;;;:::i;:::-;2796:37;;:::i;:::-;2780:53;;;;:::i;:::-;2961:37;;:::i;:::-;2935:63;;;;:::i;:::-;3031:37;;:::i;:::-;3008:60;;;;:::i;:::-;3100:36;;:::i;:::-;3078:58;;;;:::i;:::-;1648:1495::o;:::-;;;;;;;:::i;:::-;:::o;3149:76:22:-;;3217:1;3149:76;3202:4;5737:18;5750:4;5737:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5662:138::-;;5767:26;5662:138;5767:26;:::i;:::-;;5662:138::o;:::-;;;;;:::i;:::-;:::o;1033:4613:56:-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;1220:285:30:-;;;;;;:::i;:::-;1343:13;1355:1;1343:13;:::i;:::-;1380:3;1358:1;:20;;1362:16;:9;;:16;;:::i;:::-;1358:20;:::i;:::-;;;:::i;:::-;;;;;1380:3;1422:9;:12;;;:9;;1432:1;1422:12;;:::i;:::-;;:::i;:::-;;:::i;:::-;1475;;:9;;1485:1;1475:12;;:::i;:::-;;:::i;:::-;1454:34;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1380:3;:::i;:::-;1343:13;;1358:20;;;;;1220:285::o;3149:76:22:-;;3217:1;3149:76;3202:4;5517:10:56;;:::i;:::-;3202:4:22;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5426:218:56:-;5539:44;5578:5;5539:36;:26;5566:8;5539:36;;:::i;:::-;:44;:::i;:::-;5598:39;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;5426:218::o;:::-;;;;;:::i;:::-;:::o;4702:63::-;;:::i;1035:146:28:-;1111:4;;:::i;:::-;1134:11;:40;;1149:25;;;1134:40;:::i;:::-;;;:::i;:::-;;1127:47;:::o;3149:76:22:-;3202:4;3823:13:56;;:::i;:::-;3202:4:22;:::i;:::-;3149:76::o;3750:91:56:-;;;:::i;:::-;:::o;1033:4613::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;1894:602:30:-;;;1987:5;:19;;1996:10;2004:1;1996:10;:::i;:::-;1987:19;:::i;:::-;;;:::i;:::-;;1983:45;;2042:5;:17;:22;;2063:1;2042:22;:::i;:::-;;;:::i;:::-;;2038:54;;2108:13;2120:1;2108:13;:::i;:::-;2145:3;2123:1;:20;;2127:16;:9;:16;:::i;:::-;2123:20;:::i;:::-;;;:::i;:::-;;;;;2183:34;2204:12;;:9;2214:1;2204:12;;:::i;:::-;;:::i;:::-;2183:34;:::i;:::-;2235:8;:22;;2247:10;2255:1;2247:10;:::i;:::-;2235:22;:::i;:::-;;;:::i;:::-;;;:43;;;2145:3;2231:138;;2403:9;2145:3;2403:9;2417:5;2403:12;;:9;2413:1;2403:12;;:::i;:::-;;:::i;:::-;2417:5;;;:::i;:::-;2459:12;;:9;2469:1;2459:12;;:::i;:::-;;:::i;:::-;2473:5;2442:37;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2145:3;:::i;:::-;2108:13;;2231:138;2331:12;;:9;;:12;:::i;:::-;;:::i;:::-;2345:8;:::i;2235:43::-;2261:8;;:17;;2273:5;2261:17;:::i;:::-;;;:::i;:::-;;;2235:43;;2123:20;;;;;1894:602::o;2038:54::-;2086:5;;:::i;1983:45::-;;:::i;2787:177:22:-;2887:71;2787:177;:::o;4148:103::-;4231:12;4148:103;4231:12;;:::i;:::-;;;:::i;:::-;4148:103::o;7270:387::-;7347:4;;:::i;:::-;7396:26;;;:::i;:::-;7436:23;7437:22;7445:4;7451:7;7437:22;;:::i;:::-;7436:23;;:::i;:::-;7432:219;;;;7475:38;7509:4;7475:31;:22;:14;7509:4;;7475:1;:8;7484:4;7475:14;;:::i;:::-;:22;7498:7;7475:31;;:::i;:::-;:38;:::i;:::-;7550:7;7559:12;;:::i;:::-;7532:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;7593:4;7586:11;:::o;7432:219::-;7635:5;;;;7628:12;:::o;887:96:25:-;940:7;;:::i;:::-;966:10;;959:17;:::o;7892:388:22:-;7970:4;;:::i;:::-;8019:26;;;:::i;:::-;8059:22;8067:4;8073:7;8059:22;;:::i;:::-;8055:219;;;;8097:39;8131:5;8097:31;:22;:14;8131:5;;8097:1;:8;8106:4;8097:14;;:::i;:::-;:22;8120:7;8097:31;;:::i;:::-;:39;:::i;:::-;8173:7;8182:12;;:::i;:::-;8155:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;8216:4;8209:11;:::o;8055:219::-;8258:5;;;;8251:12;:::o;1033:4613:56:-;;;;:::i;:::-;;:::o;4603:312:24:-;4675:13;4683:4;4675:13;:::i;:::-;:23;;4692:6;4675:23;:::i;:::-;;;:::i;:::-;;:120;;;;4603:312;4658:251;;4603:312::o;4658:251::-;4869:29;;;;;;;;;;;;:::i;:::-;;;;4675:120;4753:32;;;:::i;:::-;:42;;4789:6;4753:42;:::i;:::-;;;:::i;:::-;;;4675:120;;3149:76:22;;3202:4;5014:13:56;;:::i;:::-;3202:4:22;:::i;:::-;3149:76::o;4951:81:56:-;;;;:::i;:::-;:::o;1033:4613::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6057:538:24:-;;;6156:52;;:50;:36;6174:17;6156:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6057:538;6152:437;;;;;;;;;;;;;;6057:538::o;6152:437::-;6518:60;6560:17;6518:60;;;;;;;;;;;;;:::i;:::-;;;;6152:437;6250:4;;:40;;6258:32;;:::i;:::-;6250:40;:::i;:::-;;;:::i;:::-;;6246:120;;6428:4;6409:17;;;6428:4;:::i;:::-;6152:437;;6246:120;6317:34;6346:4;6317:34;;;;;;;;;;;;;:::i;:::-;;;;6156:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5032:213;5098:13;5106:4;5098:13;:::i;:::-;:23;;5115:6;5098:23;:::i;:::-;;;:::i;:::-;;5094:145;;5032:213::o;5094:145::-;5199:29;4869;;;5199;;;;;;;;:::i;:::-;;;;1147:162:26;1237:66;1147:162;:::o;1033:4613:56:-;;;;;:::i;:::-;;;;;;;;;:::o;3847:139::-;3952:27;;3847:139;3926:7;;:::i;:::-;3952:17;;:27;:::i;:::-;;:::i;:::-;3945:34;:::o;1033:4613::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29966:667:60:-;;;;30179:71;30227:23;30144:19;;:::i;:::-;30227:12;;:23;:::i;:::-;30179:71;:::i;:::-;30288:11;:18;:11;:18;:::i;:::-;30333:1;30321:13;30333:1;30321:13;:::i;:::-;;30336:1;:21;;30340:17;30336:21;:::i;:::-;;;:::i;:::-;;;;;30374:50;30410:14;:11;30422:1;30410:14;;:::i;:::-;;30374:50;:::i;:::-;30442:10;;:1;:10;;:::i;:::-;:22;;30456:8;30442:22;:::i;:::-;;;:::i;:::-;;:58;;;30321:13;30438:120;;30321:13;30599:3;;;;:::i;:::-;30321:13;;30438:120;30599:3;30535:1;;:8;;30520:23;30535:1;:8;;:::i;:::-;30520:23;;:::i;:::-;30438:120;;;;30442:58;30479:1;30468:19;;30479:7;:1;:7;30468:19;:::i;:::-;;:::i;:::-;:32;;30491:9;30468:32;:::i;:::-;;;:::i;:::-;;30442:58;;30336:21;;;;;;;;29966:667::o;8737:170:23:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2970:67:24:-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;:::o;3231:65:22:-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:26:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2684:111:27:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1033:4613:56:-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;16868:204:54:-;16937:7;;:::i;:::-;17040:5;17029:35;17052:11;;17040:10;;:5;:10;;:::i;:::-;17052:5;:11;;:::i;:::-;17029:35;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;17019:46;;;;:::i;:::-;;;:::i;:::-;;17012:53;:::o;1033:4613:56:-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;4130:118::-;4207:34;4214:27;4207:34;4130:118;4214:17;:27;:::i;:::-;4207:34;:::i;:::-;4130:118::o;1695:193:30:-;1758:29;1033:4613:56;;;1779:7:30;;;1758:29;:::i;:::-;1801:5;:19;;1810:10;1818:1;1810:10;:::i;:::-;1801:19;:::i;:::-;;;:::i;:::-;;1875:5;1797:56;1033:4613:56;;;1845:7:30;;;;:::i;4254:107:56:-;4324:30;;;;;;;;;;;;:::i;:::-;;;;4367:127;4451:36;4367:127;4451:36;;;;;;;;;;;;;:::i;:::-;;;;1033:4613;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4500:196::-;4622:67;;;;;;;;;;;;;;:::i;:::-;;;;1033:4613;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3992:132::-;4082:27;:35;3992:132;4082:17;;:27;:::i;:::-;:35;:::i;:::-;3992:132::o;1033:4613::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4381:197:22:-;;4468:23;4469:22;4477:4;4483:7;4469:22;;:::i;:::-;4468:23;;:::i;:::-;4464:108;;4381:197;;:::o;4464:108::-;4514:47;;;;;;;;;;;;;;:::i;:::-;;;;1441:138:8;1493:7;;:::i;:::-;1546:19;1519:53;;:47;1546:19;;:::i;:::-;1519:47;:::i;:::-;:53;;:::i;:::-;1512:60;:::o;2264:344::-;;2374:17;;;:::i;:::-;2425;2407:36;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2458:11;:4;:11;:::i;:::-;:15;;2472:1;2458:15;:::i;:::-;;;:::i;:::-;;2454:148;;;;2489:53;2518:17;2489:53;:::i;:::-;;2454:148;2264:344::o;2454:148::-;;;;;:::i;:::-;;;7084:141:23;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;;;;;;;;;;;:::i;:::-;;;;6893:76;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:26:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;6893:76:23:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1910:40:27:-;1949:1;;;:::i;:::-;1910:40;:::o;2801:183::-;2954:23;2916:28;;:::i;:::-;2954:9;2966:11;;:::i;:::-;2954:1;:9;:23;:::i;:::-;2801:183::o;:::-;;;:::i;:::-;:::o;1033:4613:56:-;;;;;;;;;;;;;:::i;:::-;:::o;4807:138::-;4896:42;4807:138;4896:42;;;;;;;;;;;;;:::i;:::-;;;;2694:388:30;2750:326;2694:388;;2750:326;;;;;;;;;;;;;;;;;;;;;;;;1899:163:16;;:::o;1671:281:8:-;1748:17;:29;:34;;1781:1;1748:34;:::i;:::-;;;:::i;:::-;;1744:119;;1872:73;1928:17;1872:53;:47;1899:19;;:::i;:::-;1872:47;:::i;:::-;:53;:73;:::i;:::-;1671:281::o;1744:119::-;1805:47;1834:17;1805:47;6518:60:24;;;;;;1805:47:8;;;;;;:::i;:::-;;;;6113:122;6163:9;:13;;6175:1;6163:13;:::i;:::-;;;:::i;:::-;;6159:70;;6113:122::o;6159:70::-;6199:19;;;;;;;;;;;;:::i;:::-;;;;1033:4613:56;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;3900:253:12;4049:25;3900:253;4091:55;3900:253;3983:12;;:::i;:::-;4049:6;;4069:4;4049:25;;;;;;;;;;;:::i;:::-;4118:6;4126:7;4135:10;4091:55;;:::i;:::-;4084:62;:::o;8487:120:23:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;2395:183:27:-;2499:73;2395:183;:::o;4421:582:12:-;;4593:8;4421:582;4565:12;;:::i;:::-;4594:7;4593:8;;:::i;:::-;4589:408;;;;4625:10;;:::i;4589:408::-;4841:17;:10;:17;:::i;:::-;:22;;4862:1;4841:22;:::i;:::-;;;:::i;:::-;;:49;;;4589:408;4837:119;;4976:10;4969:17;:::o;4837:119::-;4917:24;4934:6;4917:24;;;;;;;;;;;;;:::i;:::-;;;;4841:49;4867:6;;:18;:23;;4889:1;4867:23;:::i;:::-;;;:::i;:::-;;4841:49;;5543:487;5674:17;:10;:17;:::i;:::-;:21;;5694:1;5674:21;:::i;:::-;;;:::i;:::-;;5670:354;;;;5799:158;;;;;;5670:354;5994:19;;;;;;;;;;;;:::i;:::-;;;","linkReferences":{},"immutableReferences":{"6698":[{"start":14490,"length":32},{"start":14591,"length":32},{"start":15022,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","ASSET_MANAGER_ROLE()":"a4b32de8","BPS_DENOMINATOR()":"e1a45218","COMMISSION_CHANGE_DELAY()":"d45ff582","DEFAULT_ADMIN_ROLE()":"a217fddf","LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MAX_REWARD_MULTIPLIER_BPS()":"b5e2a87a","MIN_LOCK_AMOUNT()":"dd764abf","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","PRECISION()":"aaf5eb68","SLASHER_ROLE()":"5095af64","TANGLE_ROLE()":"602356e3","UPGRADER_ROLE()":"f72c0d8b","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","VIRTUAL_ASSETS()":"b6608409","VIRTUAL_SHARES()":"88c47f68","blueprintSlashCount(uint64,address)":"4e9c929a","clearFacetSelectors(bytes4[])":"e07dec29","currentRound()":"8a19c8bc","delegationBondLessDelay()":"ba05bbf5","facetForSelector(bytes4)":"90837ff4","getAccumulatedDust(address)":"49147411","getAssetAdapter(address)":"8a7fe60f","getPendingSlashCount(address)":"9480e4dd","getRoleAdmin(bytes32)":"248a9ca3","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getSnapshot(uint64,address)":"c07449e2","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,uint256,uint256,uint16)":"cbb6d6bd","lastRoundAdvance()":"05d64e38","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","nativeEnabled()":"77ab2cf3","nextSlashId(address)":"96085673","operatorCommissionBps()":"32273f61","paused()":"5c975abb","proxiableUUID()":"52d1902d","registerFacet(address)":"46d163aa","registerFacetSelectors(address,bytes4[])":"19e82e61","renounceRole(bytes32,address)":"36568abe","requireAdapters()":"b54b2b9e","resetPendingSlashCount(address,uint64)":"e27e05c1","revokeRole(bytes32,address)":"d547741f","roundDuration()":"f7cb789a","serviceSlashCount(uint64,address)":"9722f4b9","slashHistory(address,uint64)":"0aa8b110","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintNotRegisteredForOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"existingFacet\",\"type\":\"address\"}],\"name\":\"SelectorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"UnknownSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDust\",\"type\":\"uint256\"}],\"name\":\"DustAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FacetSelectorCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"OperatorDelegationModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashCountReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashDecremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlashedPrincipalReconciled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BPS_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMISSION_CHANGE_DELAY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_REWARD_MULTIPLIER_BPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LOCK_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TANGLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_ASSETS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_SHARES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"blueprintSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"clearFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"facetForSelector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAccumulatedDust\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetAdapter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getPendingSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lostAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSnapshot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDelegated\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorSnapshot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_operatorCommissionBps\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRoundAdvance\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nextSlashId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"registerFacet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"registerFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requireAdapters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"resetPendingSlashCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"slashHistory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ZeroAddress()\":[{\"details\":\"Zero address provided - kept parameterless for backward compatibility Context is typically clear from the function that reverts\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"details\":\"Individual delegator amounts can be computed: shares * (oldRate - newRate) / PRECISION\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"params\":{\"assetHash\":\"Asset hash for the pool\",\"blueprintId\":\"The blueprint where violation occurred (0 for consensus/native slash)\",\"delegatorsSlashed\":\"Amount slashed from delegator pools (reduces totalAssets)\",\"exchangeRateAfter\":\"Exchange rate after slash (scaled by PRECISION)\",\"operator\":\"The slashed operator\",\"operatorSlashed\":\"Amount slashed from operator's self-stake\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"}},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"commitmentCount\":\"Number of asset commitments that were slashed\",\"operator\":\"The slashed operator\",\"serviceId\":\"The service where violation occurred\",\"totalSlashed\":\"Total amount slashed across all committed assets\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getAccumulatedDust(address)\":{\"params\":{\"token\":\"The token address (address(0) for native)\"},\"returns\":{\"_0\":\"The accumulated dust amount\"}},\"getAssetAdapter(address)\":{\"params\":{\"token\":\"Token address\"},\"returns\":{\"_0\":\"adapter Adapter address (or zero if none)\"}},\"getPendingSlashCount(address)\":{\"params\":{\"operator\":\"The operator to query\"},\"returns\":{\"_0\":\"count Number of pending slashes\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getSlashCountForBlueprint(uint64,address)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"operator\":\"The operator address\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in services of this blueprint\"}},\"getSlashCountForService(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in this service\"}},\"getSlashImpact(address,uint64,address)\":{\"params\":{\"delegator\":\"The delegator to check\",\"operator\":\"The operator that was slashed\",\"slashId\":\"The slash event ID\"},\"returns\":{\"lostAmount\":\"Approximate amount lost due to this slash\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,uint256,uint256,uint16)\":{\"params\":{\"_operatorCommissionBps\":\"Operator commission in basis points\",\"admin\":\"Admin address\",\"nativeMinDelegation\":\"Minimum delegation amount\",\"nativeMinOperatorStake\":\"Minimum stake for operators\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"resetPendingSlashCount(address,uint64)\":{\"details\":\"Admin recovery for cases where the per-operator pending-slash counter drifts from the true count of un-finalized proposals targeting the operator. Bypasses the normal increment/decrement path so it must only be called after verifying the correct count off-chain.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"MultiAssetDelegation\",\"version\":1},\"userdoc\":{\"errors\":{\"BlueprintNotRegisteredForOperator(address,uint64)\":[{\"notice\":\"Thrown when a Fixed-mode delegation references a blueprint the operator is not registered for. Such a pool can never be the target of a real slash (executeSlash always slashes the offending service's own blueprint, which the operator runs), so the stake would be permanently slash-immune. Declared locally to avoid touching the shared DelegationErrors library.\"}]},\"events\":{\"DustAccumulated(address,uint256,uint256)\":{\"notice\":\"Emitted when dust is accumulated from rounding\"},\"DustSwept(address,address,uint256)\":{\"notice\":\"Emitted when accumulated dust is swept to treasury\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when slash is recorded (for off-chain indexing of per-delegator impact)\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an operator and their delegators are slashed for an asset\"},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"notice\":\"Emitted when an operator is slashed for a specific service with per-asset commitments\"},\"SlashedPrincipalReconciled(address,bytes32,uint256)\":{\"notice\":\"Emitted when realized slash loss is cleared out of a delegator's deposit accounting.\"}},\"kind\":\"user\",\"methods\":{\"COMMISSION_CHANGE_DELAY()\":{\"notice\":\"Timelock delay for commission increases (14 days)\"},\"MAX_REWARD_MULTIPLIER_BPS()\":{\"notice\":\"Upper bound (2x) on a per-asset reward multiplier set via enableAsset.\"},\"blueprintSlashCount(uint64,address)\":{\"notice\":\"Slash count per blueprint: blueprintId => operator => count\"},\"clearFacetSelectors(bytes4[])\":{\"notice\":\"Remove selectors from the router\"},\"currentRound()\":{\"notice\":\"Current round number\"},\"delegationBondLessDelay()\":{\"notice\":\"Delay for unstaking delegations (in rounds)\"},\"facetForSelector(bytes4)\":{\"notice\":\"Resolve the facet for a selector\"},\"getAccumulatedDust(address)\":{\"notice\":\"Get accumulated dust for a token\"},\"getAssetAdapter(address)\":{\"notice\":\"Get adapter for a token\"},\"getPendingSlashCount(address)\":{\"notice\":\"Get pending slash count for an operator\"},\"getSlashCount(address)\":{\"notice\":\"Get total slashes for an operator\"},\"getSlashCountForBlueprint(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific blueprint\"},\"getSlashCountForService(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific service\"},\"getSlashImpact(address,uint64,address)\":{\"notice\":\"Calculate how much a delegator lost from a specific slash\"},\"getSlashRecord(address,uint64)\":{\"notice\":\"Get slash record details\"},\"getSnapshot(uint64,address)\":{\"notice\":\"Get snapshot for an operator at a specific round\"},\"initialize(address,uint256,uint256,uint16)\":{\"notice\":\"Initialize the contract\"},\"lastRoundAdvance()\":{\"notice\":\"Timestamp when the last round was advanced\"},\"leaveDelegatorsDelay()\":{\"notice\":\"Delay for delegator withdrawals (in rounds)\"},\"leaveOperatorsDelay()\":{\"notice\":\"Delay for operator exit (in rounds)\"},\"nativeEnabled()\":{\"notice\":\"Whether native asset is enabled\"},\"nextSlashId(address)\":{\"notice\":\"Next slash ID per operator\"},\"operatorCommissionBps()\":{\"notice\":\"Operator commission rate in basis points\"},\"registerFacet(address)\":{\"notice\":\"Register selectors exposed by a facet\"},\"registerFacetSelectors(address,bytes4[])\":{\"notice\":\"Register specific selectors for a facet\"},\"requireAdapters()\":{\"notice\":\"Whether to require adapters for all ERC20 deposits\"},\"resetPendingSlashCount(address,uint64)\":{\"notice\":\"Force `_operatorPendingSlashCount[operator]` to `count`.\"},\"roundDuration()\":{\"notice\":\"Seconds per round (used for time-based rate limiting)\"},\"serviceSlashCount(uint64,address)\":{\"notice\":\"Slash count per service: serviceId => operator => count\"},\"slashHistory(address,uint64)\":{\"notice\":\"Slash history per operator: operator => slashId => record\"}},\"notice\":\"Router contract for multi-asset staking\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MultiAssetDelegation.sol\":\"MultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"src/config/ProtocolConfig.sol\":{\"keccak256\":\"0x5f350b897faa2b6d983c8694124a5226b7fb98f7320d72c7d4b42dde59adb97d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://793b9c2e8a6b6680506927d2c960ac91505db05b8e846f3c989e4b57e7e323b7\",\"dweb:/ipfs/QmUmey1UQpDZaVTasr1eyrUxFYEaFxCy3cKNw3XYPhRXaa\"]},\"src/facets/FacetRouterBase.sol\":{\"keccak256\":\"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa\",\"dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD\"]},\"src/interfaces/IFacetSelectors.sol\":{\"keccak256\":\"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3\",\"dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba\",\"dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d\",\"dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369\",\"dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0x2d865c489500c358ab24c7cbc347d33fb1406a6c7e9d083d0369d9fa1df34eff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f141ef39c41b4ff151bc58aacc92c5c6ad7970b995756654f723c1f80c0b20\",\"dweb:/ipfs/QmXhmXeX7TwMTVtpoubCdBfnhkzyFrr6wWiTPyhbiEt43U\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415\",\"dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ\"]},\"src/staking/DepositManager.sol\":{\"keccak256\":\"0xc49adab8ceeef905cd4357451358e59e5c5db60dd41878283f1f27359293f203\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://127b45f607fce682c08f75c305e7b40493ed6100f143e46d0b7bd4198c99fadc\",\"dweb:/ipfs/QmXwx2z3dVfDtmL9Vs2YyophVsDNZwDk7zX4JdJF4wFx6j\"]},\"src/staking/MultiAssetDelegation.sol\":{\"keccak256\":\"0x9317c3cbcb3c6a127c77064560a8ea5e4b5944100758162509a478d18750ec1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be0f287c899f2f2537765e2875b2402e7fe59f489c4c77639b4dca4c44968b81\",\"dweb:/ipfs/QmQUwWzqosHX18ti1mHvMZQbWmMF8JVZfY9yPCni9oVNEL\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb\",\"dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d\",\"dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf\",\"dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp\"]},\"src/staking/adapters/IAssetAdapter.sol\":{\"keccak256\":\"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44\",\"dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"type":"error","name":"BlueprintNotRegisteredForOperator"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"NotAContract"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"existingFacet","type":"address"}],"type":"error","name":"SelectorAlreadyRegistered"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"UnknownSelector"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalDust","type":"uint256","indexed":false}],"type":"event","name":"DustAccumulated","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DustSwept","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetRegistered","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"FacetSelectorCleared","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetSelectorSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8","indexed":false}],"type":"event","name":"OperatorDelegationModeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorWhitelistUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashCountReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashDecremented","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashIncremented","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SlashedPrincipalReconciled","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMISSION_CHANGE_DELAY","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_REWARD_MULTIPLIER_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_LOCK_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TANGLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_ASSETS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"blueprintSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"clearFacetSelectors"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"facetForSelector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAccumulatedDust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetAdapter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"lostAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSnapshot","outputs":[{"internalType":"struct Types.OperatorSnapshot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"totalDelegated","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"nativeMinOperatorStake","type":"uint256"},{"internalType":"uint256","name":"nativeMinDelegation","type":"uint256"},{"internalType":"uint16","name":"_operatorCommissionBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastRoundAdvance","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nextSlashId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerFacet"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"registerFacetSelectors"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"requireAdapters","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"resetPendingSlashCount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"serviceSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"slashHistory","outputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getAccumulatedDust(address)":{"params":{"token":"The token address (address(0) for native)"},"returns":{"_0":"The accumulated dust amount"}},"getAssetAdapter(address)":{"params":{"token":"Token address"},"returns":{"_0":"adapter Adapter address (or zero if none)"}},"getPendingSlashCount(address)":{"params":{"operator":"The operator to query"},"returns":{"_0":"count Number of pending slashes"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getSlashCountForBlueprint(uint64,address)":{"params":{"blueprintId":"The blueprint ID","operator":"The operator address"},"returns":{"_0":"count Number of times operator was slashed in services of this blueprint"}},"getSlashCountForService(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"count Number of times operator was slashed in this service"}},"getSlashImpact(address,uint64,address)":{"params":{"delegator":"The delegator to check","operator":"The operator that was slashed","slashId":"The slash event ID"},"returns":{"lostAmount":"Approximate amount lost due to this slash"}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,uint256,uint256,uint16)":{"params":{"_operatorCommissionBps":"Operator commission in basis points","admin":"Admin address","nativeMinDelegation":"Minimum delegation amount","nativeMinOperatorStake":"Minimum stake for operators"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"resetPendingSlashCount(address,uint64)":{"details":"Admin recovery for cases where the per-operator pending-slash counter drifts from the true count of un-finalized proposals targeting the operator. Bypasses the normal increment/decrement path so it must only be called after verifying the correct count off-chain."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"COMMISSION_CHANGE_DELAY()":{"notice":"Timelock delay for commission increases (14 days)"},"MAX_REWARD_MULTIPLIER_BPS()":{"notice":"Upper bound (2x) on a per-asset reward multiplier set via enableAsset."},"blueprintSlashCount(uint64,address)":{"notice":"Slash count per blueprint: blueprintId => operator => count"},"clearFacetSelectors(bytes4[])":{"notice":"Remove selectors from the router"},"currentRound()":{"notice":"Current round number"},"delegationBondLessDelay()":{"notice":"Delay for unstaking delegations (in rounds)"},"facetForSelector(bytes4)":{"notice":"Resolve the facet for a selector"},"getAccumulatedDust(address)":{"notice":"Get accumulated dust for a token"},"getAssetAdapter(address)":{"notice":"Get adapter for a token"},"getPendingSlashCount(address)":{"notice":"Get pending slash count for an operator"},"getSlashCount(address)":{"notice":"Get total slashes for an operator"},"getSlashCountForBlueprint(uint64,address)":{"notice":"Get slash count for an operator in a specific blueprint"},"getSlashCountForService(uint64,address)":{"notice":"Get slash count for an operator in a specific service"},"getSlashImpact(address,uint64,address)":{"notice":"Calculate how much a delegator lost from a specific slash"},"getSlashRecord(address,uint64)":{"notice":"Get slash record details"},"getSnapshot(uint64,address)":{"notice":"Get snapshot for an operator at a specific round"},"initialize(address,uint256,uint256,uint16)":{"notice":"Initialize the contract"},"lastRoundAdvance()":{"notice":"Timestamp when the last round was advanced"},"leaveDelegatorsDelay()":{"notice":"Delay for delegator withdrawals (in rounds)"},"leaveOperatorsDelay()":{"notice":"Delay for operator exit (in rounds)"},"nativeEnabled()":{"notice":"Whether native asset is enabled"},"nextSlashId(address)":{"notice":"Next slash ID per operator"},"operatorCommissionBps()":{"notice":"Operator commission rate in basis points"},"registerFacet(address)":{"notice":"Register selectors exposed by a facet"},"registerFacetSelectors(address,bytes4[])":{"notice":"Register specific selectors for a facet"},"requireAdapters()":{"notice":"Whether to require adapters for all ERC20 deposits"},"resetPendingSlashCount(address,uint64)":{"notice":"Force `_operatorPendingSlashCount[operator]` to `count`."},"roundDuration()":{"notice":"Seconds per round (used for time-based rate limiting)"},"serviceSlashCount(uint64,address)":{"notice":"Slash count per service: serviceId => operator => count"},"slashHistory(address,uint64)":{"notice":"Slash history per operator: operator => slashId => record"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/MultiAssetDelegation.sol":"MultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27","urls":["bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e","dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"src/config/ProtocolConfig.sol":{"keccak256":"0x5f350b897faa2b6d983c8694124a5226b7fb98f7320d72c7d4b42dde59adb97d","urls":["bzz-raw://793b9c2e8a6b6680506927d2c960ac91505db05b8e846f3c989e4b57e7e323b7","dweb:/ipfs/QmUmey1UQpDZaVTasr1eyrUxFYEaFxCy3cKNw3XYPhRXaa"],"license":"MIT"},"src/facets/FacetRouterBase.sol":{"keccak256":"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e","urls":["bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa","dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD"],"license":"MIT"},"src/interfaces/IFacetSelectors.sol":{"keccak256":"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4","urls":["bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3","dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x82eb45985a5d9ebae3c850dd6f6bddb99d0459860a764472e6bbe201aaba33b6","urls":["bzz-raw://c0324da30767903eee91f04c4412824e781c304319f728fa5872735a87526fba","dweb:/ipfs/QmWdfCK9qUxRzDoWqPW5eZUueDtR6kLTyv4GuWS5HxSJ5Q"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0xb658ef174fa23b1d01131c7a978333980a7d0406be3b477b275b69f3b6904da2","urls":["bzz-raw://f61d725f76fc3e15f538e8203e5f3123a13d49211f25f5fec80f7dbcfac6fb0d","dweb:/ipfs/Qmcfz34fa3SZmutuKcziBMQLMfDoxMTxRVBcJXY6yVLxFS"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xe3bbe448a45f8ef25f3c65cce97d983a1324f9fcdaf5426e9d1439e5fec219f5","urls":["bzz-raw://2930a9119d3a9c278300f870bf332b98e59075b18ddab287414cd062454ed369","dweb:/ipfs/QmWwcVYANVhyAZTXYevnDXgwWsBVz98nLUP7biWW2HarXD"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0x2d865c489500c358ab24c7cbc347d33fb1406a6c7e9d083d0369d9fa1df34eff","urls":["bzz-raw://c2f141ef39c41b4ff151bc58aacc92c5c6ad7970b995756654f723c1f80c0b20","dweb:/ipfs/QmXhmXeX7TwMTVtpoubCdBfnhkzyFrr6wWiTPyhbiEt43U"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0x4471d0b932858076d1b74119cb09eeea149d39d79070185ab256ce4538b12153","urls":["bzz-raw://92f77d622bc18d540507dc42ef6a72bf6e7c0a340d4238bae0e9548823e84415","dweb:/ipfs/QmSoJTwszGyZqU2SmPNWGHCH3VvJJ6jaFkJtrzTwYeqBgZ"],"license":"MIT"},"src/staking/DepositManager.sol":{"keccak256":"0xc49adab8ceeef905cd4357451358e59e5c5db60dd41878283f1f27359293f203","urls":["bzz-raw://127b45f607fce682c08f75c305e7b40493ed6100f143e46d0b7bd4198c99fadc","dweb:/ipfs/QmXwx2z3dVfDtmL9Vs2YyophVsDNZwDk7zX4JdJF4wFx6j"],"license":"MIT"},"src/staking/MultiAssetDelegation.sol":{"keccak256":"0x9317c3cbcb3c6a127c77064560a8ea5e4b5944100758162509a478d18750ec1b","urls":["bzz-raw://be0f287c899f2f2537765e2875b2402e7fe59f489c4c77639b4dca4c44968b81","dweb:/ipfs/QmQUwWzqosHX18ti1mHvMZQbWmMF8JVZfY9yPCni9oVNEL"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x83bbe9c2de3492582216202e3865e4a03eae3d3864e1575173d3e32a0acf50c0","urls":["bzz-raw://227b9ddfeb2a29fefd698a1afc24bca8a1c91fa03a763e77644f5367a96b2cfb","dweb:/ipfs/QmYbKMuWUHSUQSWKvuw3NcmgzJuB51Kz3QPUJuZPpeFuBe"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0x00727d591bc846102b7520c16f17b5346a4a5c86ef3723cac913bc3e817e446c","urls":["bzz-raw://878205fd3d56dffe93b8c7a5ec47fea28182eaff1a77d055b618cfc3b74c4a6d","dweb:/ipfs/QmUiqWHrBP8b6x95MoUMAApAPSVcGa1r3FeQZQUCecr9cB"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xe3ebd6ca27ccbee11f0e278821677a64d8685f77d4921e5aba10f3e7d8fefc7a","urls":["bzz-raw://7b8f6e7db91df2fe895f3ec25e21d015f67c4939ea3807a57fc08f61e16236cf","dweb:/ipfs/QmTZaJ1qEdFjincMKF6pA3wKNf7d5vYEs5i5DFSXtrWGyp"],"license":"MIT"},"src/staking/adapters/IAssetAdapter.sol":{"keccak256":"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061","urls":["bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44","dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW"],"license":"MIT"}},"version":1},"id":56} \ No newline at end of file diff --git a/bindings/abi/OperatorStatusRegistry.json b/bindings/abi/OperatorStatusRegistry.json index 72384261..b1916e32 100644 --- a/bindings/abi/OperatorStatusRegistry.json +++ b/bindings/abi/OperatorStatusRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"AlreadyRegistered","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"InternalOnly","inputs":[]},{"type":"error","name":"IntervalTooShort","inputs":[]},{"type":"error","name":"InvalidBounds","inputs":[]},{"type":"error","name":"InvalidMaxMissed","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"NameTooLong","inputs":[]},{"type":"error","name":"NotAuthorized","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[]},{"type":"error","name":"NotRegisteredOperator","inputs":[]},{"type":"error","name":"NotServiceOwner","inputs":[]},{"type":"error","name":"NotSlashingOracle","inputs":[]},{"type":"error","name":"OnlyTangleCore","inputs":[]},{"type":"error","name":"OperatorNotEligibleForRemoval","inputs":[]},{"type":"error","name":"OperatorSlashed","inputs":[]},{"type":"error","name":"OperatorUnknown","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TooManyDefinitions","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b61739a6104d38239608051818181610ecf0152613553015260a05181818161144e01528181612595015281816130ef015281816151000152615bdd015261739a90f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b61015761786d8038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b6124f9565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124c5565b612490565b61242d565b6123cd565b612397565b612363565b61232e565b6122f6565b612224565b6121ef565b6121ad565b612178565b61204e565b61201a565b611fad565b611f73565b611eaa565b611de7565b611c60565b611baa565b611b77565b611b40565b611aab565b611a78565b611a42565b611a0c565b611950565b61191b565b6118ad565b611672565b611628565b6115a6565b611571565b611503565b611470565b611417565b6113e2565b61137d565b611333565b6112c7565b6111f3565b6111b9565b610f83565b610f16565b610e97565b610d1e565b610cd0565b610c35565b610b8f565b610a62565b6106c0565b61066e565b61063a565b610577565b61051d565b61044e565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060401b031690565b6103c8816103b4565b036103cf57565b5f80fd5b905035906103e0826103bf565b565b60018060a01b031690565b6103f6906103e2565b90565b610402816103ed565b0361040957565b5f80fd5b9050359061041a826103f9565b565b91906040838203126104445780610438610441925f86016103d3565b9360200161040d565b90565b6103ac565b5f0190565b3461047d5761046761046136600461041c565b9061258c565b61046f6103a2565b8061047981610449565b0390f35b6103a8565b9060208282031261049b57610498915f016103d3565b90565b6103ac565b6104a9906103b4565b9052565b60ff1690565b6104bc906104ad565b9052565b151590565b6104ce906104c0565b9052565b90604080610506936104ea5f8201515f8601906104a0565b6104fc602082015160208601906104b3565b01519101906104c5565b565b919061051b905f606085019401906104d2565b565b3461054d57610549610538610533366004610482565b61269b565b6105406103a2565b91829182610508565b0390f35b6103a8565b90565b61055e90610552565b9052565b9190610575905f60208501940190610555565b565b346105a8576105a461059361058d36600461041c565b906126b4565b61059b6103a2565b91829182610562565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f15781359160018060401b0383116105ec5760200192602083028401116105e757565b6105b5565b6105b1565b6105ad565b9190916040818403126106355761060f835f83016103d3565b92602082013560018060401b0381116106305761062c92016105b9565b9091565b6103b0565b6103ac565b346106695761065361064d3660046105f6565b91612e22565b61065b6103a2565b8061066581610449565b0390f35b6103a8565b3461069d5761068761068136600461041c565b906130e6565b61068f6103a2565b8061069981610449565b0390f35b6103a8565b906020828203126106bb576106b8915f0161040d565b90565b6103ac565b346106ee576106d86106d33660046106a2565b61326b565b6106e06103a2565b806106ea81610449565b0390f35b6103a8565b6106fc81610552565b0361070357565b5f80fd5b90503590610714826106f3565b565b919060408382031261073e578061073261073b925f86016103d3565b93602001610707565b90565b6103ac565b90565b61075a61075561075f926103b4565b610743565b6103b4565b90565b9061076c90610746565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107ab8161078c565b8210156107c5576107bd600491610790565b910201905f90565b610778565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156107fe575b60208310146107f957565b6107ca565b91607f16916107ee565b60209181520190565b5f5260205f2090565b905f929180549061083461082d836107de565b8094610808565b916001811690815f1461088b575060011461084f575b505050565b61085c9192939450610811565b915f925b81841061087357505001905f808061084a565b60018160209295939554848601520191019290610860565b92949550505060ff19168252151560200201905f808061084a565b906108b09161081a565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108db906108b3565b810190811060018060401b038211176108f357604052565b6108bd565b90610918610911926109086103a2565b938480926108a6565b03836108d1565b565b5f1c90565b90565b61092e6109339161091a565b61091f565b90565b6109409054610922565b90565b60ff1690565b61095561095a9161091a565b610943565b90565b6109679054610949565b90565b610975906008610762565b9061097f8261078c565b8110156109c55761098f916107a2565b509061099c5f83016108f8565b916109a960018201610936565b916109c260036109bb60028501610936565b930161095d565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a00610a09602093610a0e936109f7816109c9565b938480936109cd565b958691016109d6565b6108b3565b0190565b610a1b906104c0565b9052565b610a59610a6094610a4f610a446060959998969960808601908682035f8801526109e1565b986020850190610555565b6040830190610555565b0190610a12565b565b34610a9757610a93610a7e610a78366004610716565b9061096a565b90610a8a9492946103a2565b94859485610a1f565b0390f35b6103a8565b610aa5816104ad565b03610aac57565b5f80fd5b90503590610abd82610a9c565b565b909182601f83011215610af75781359160018060401b038311610af2576020019260018302840111610aed57565b6105b5565b6105b1565b6105ad565b919060c083820312610b8a57610b14815f85016103d3565b92610b2282602083016103d3565b92610b308360408401610ab0565b92606083013560018060401b038111610b855781610b4f918501610abf565b929093610b5f83608083016103d3565b9260a082013560018060401b038111610b8057610b7c9201610abf565b9091565b6103b0565b6103b0565b6103ac565b34610bc757610bb1610ba2366004610afc565b9695909594919493929361364b565b610bb96103a2565b80610bc381610449565b0390f35b6103a8565b5f910312610bd657565b6103ac565b90565b610bf2610bed610bf792610bdb565b610743565b6103b4565b90565b610c0561012c610bde565b90565b610c10610bfa565b90565b610c1c906103b4565b9052565b9190610c33905f60208501940190610c13565b565b34610c6557610c45366004610bcc565b610c61610c50610c08565b610c586103a2565b91829182610c20565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c89906008610c8e9302610c6a565b610c6e565b90565b90610c9c9154610c79565b90565b610cab600b5f90610c91565b90565b610cb7906103ed565b9052565b9190610cce905f60208501940190610cae565b565b34610d0057610ce0366004610bcc565b610cfc610ceb610c9f565b610cf36103a2565b91829182610cbb565b0390f35b6103a8565b610d1061012c610bde565b90565b610d1b610d05565b90565b34610d4e57610d2e366004610bcc565b610d4a610d39610d13565b610d416103a2565b91829182610c20565b0390f35b6103a8565b90602082820312610d82575f82013560018060401b038111610d7d57610d799201610abf565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610db9610dc2602093610dc793610db0816109c9565b93848093610808565b958691016109d6565b6108b3565b0190565b610dd490610552565b9052565b90610e0290602080610df7604084015f8701518582035f870152610d9a565b940151910190610dcb565b90565b90610e0f91610dd8565b90565b60200190565b90610e2c610e2583610d87565b8092610d8b565b9081610e3d60208302840194610d94565b925f915b838310610e5057505050505090565b90919293946020610e72610e6c83856001950387528951610e05565b97610e12565b9301930191939290610e41565b610e949160208201915f818403910152610e18565b90565b34610ec857610ec4610eb3610ead366004610d53565b90613695565b610ebb6103a2565b91829182610e7f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610efd90610ef1565b9052565b9190610f14905f60208501940190610ef4565b565b34610f4657610f26366004610bcc565b610f42610f31610ecd565b610f396103a2565b91829182610f01565b0390f35b6103a8565b90565b610f62610f5d610f6792610f4b565b610743565b6103b4565b90565b610f75610e10610f4e565b90565b610f80610f6a565b90565b34610fb357610f93366004610bcc565b610faf610f9e610f78565b610fa66103a2565b91829182610c20565b0390f35b6103a8565b90610fc290610746565b5f5260205260405f2090565b610fe2610fdd610fe7926103e2565b610743565b6103e2565b90565b610ff390610fce565b90565b610fff90610fea565b90565b9061100c90610ff6565b5f5260205260405f2090565b60018060401b031690565b61102f6110349161091a565b611018565b90565b6110419054611023565b90565b60401c90565b60ff1690565b61105c61106191611044565b61104a565b90565b61106e9054611050565b90565b60481c90565b60ff1690565b61108961108e91611071565b611077565b90565b61109b905461107d565b90565b90565b6110ad6110b29161091a565b61109e565b90565b6110bf90546110a1565b90565b906110d16110d6926003610fb8565b611002565b6110e15f8201610936565b916110ee60018301611037565b916110fb60018201611064565b91611114600261110d60018501611091565b93016110b5565b90565b611120906104ad565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561114257565b611124565b9061115182611138565b565b61115c90611147565b90565b61116890611153565b9052565b909594926111b7946111a66111b09261119c60809661119260a088019c5f890190610555565b6020870190610c13565b6040850190611117565b606083019061115f565b0190610ef4565b565b346111ee576111ea6111d56111cf36600461041c565b906110c2565b916111e19593956103a2565b9586958661116c565b0390f35b6103a8565b346112235761121f61120e611209366004610482565b6136af565b6112166103a2565b91829182610562565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611244906103ed565b9052565b906112558160209361123b565b0190565b60200190565b9061127c61127661126f84611228565b809361122c565b92611235565b905f5b81811061128c5750505090565b9091926112a561129f6001928651611248565b94611259565b910191909161127f565b6112c49160208201915f81840391015261125f565b90565b346112f7576112f36112e26112dd366004610482565b613767565b6112ea6103a2565b918291826112af565b0390f35b6103a8565b90565b61131361130e611318926112fc565b610743565b610552565b90565b61132560c86112ff565b90565b61133061131b565b90565b3461136357611343366004610bcc565b61135f61134e611328565b6113566103a2565b91829182610562565b0390f35b6103a8565b919061137b905f60208501940190610a12565b565b346113ae576113aa61139961139336600461041c565b90613807565b6113a16103a2565b91829182611368565b0390f35b6103a8565b906113bd90610746565b5f5260205260405f2090565b6113df906113da6007915f926113b3565b610c91565b90565b346114125761140e6113fd6113f8366004610482565b6113c9565b6114056103a2565b91829182610cbb565b0390f35b6103a8565b346114475761144361143261142d366004610482565b61388e565b61143a6103a2565b918291826112af565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114a057611480366004610bcc565b61149c61148b61144c565b6114936103a2565b91829182610cbb565b0390f35b6103a8565b906080828203126114fe576114bc815f84016103d3565b926114ca82602085016103d3565b926114d88360408301610ab0565b92606082013560018060401b0381116114f9576114f59201610abf565b9091565b6103b0565b6103ac565b346115355761151f6115163660046114a5565b93929092613921565b6115276103a2565b8061153181610449565b0390f35b6103a8565b90565b61155161154c6115569261153a565b610743565b610552565b90565b611563603261153d565b90565b61156e611559565b90565b346115a157611581366004610bcc565b61159d61158c611566565b6115946103a2565b91829182610562565b0390f35b6103a8565b346115d7576115d36115c26115bc36600461041c565b90613930565b6115ca6103a2565b91829182611368565b0390f35b6103a8565b90565b6115f36115ee6115f8926115dc565b610743565b6104ad565b90565b61160560036115df565b90565b6116106115fb565b90565b9190611626905f60208501940190611117565b565b3461165857611638366004610bcc565b611654611643611608565b61164b6103a2565b91829182611613565b0390f35b6103a8565b9190611670905f6020850194019061115f565b565b346116a35761169f61168e61168836600461041c565b9061395c565b6116966103a2565b9182918261165d565b0390f35b6103a8565b906116bb6116b46103a2565b92836108d1565b565b60018060401b0381116116d35760208091020190565b6108bd565b5f80fd5b5f80fd5b5f80fd5b60018060401b038111611700576116fc6020916108b3565b0190565b6108bd565b90825f939282370152565b90929192611725611720826116e4565b6116a8565b938185526020850190828401116117415761173f92611705565b565b6116e0565b9080601f830112156117645781602061176193359101611710565b90565b6105ad565b9190916040818403126117ba5761178060406116a8565b925f8201359160018060401b0383116117b5576117a2826117ae948301611746565b5f860152602001610707565b6020830152565b6116dc565b6116d8565b9291906117d36117ce826116bd565b6116a8565b93818552602080860192028101918383116118285781905b8382106117f9575050505050565b813560018060401b038111611823576020916118188784938701611769565b8152019101906117eb565b6105ad565b6105b5565b9080601f8301121561184b57816020611848933591016117bf565b90565b6105ad565b6080818303126118a857611866825f83016103d3565b92611874836020840161040d565b9260408301359060018060401b0382116118a357611897816118a093860161182d565b93606001610707565b90565b6103b0565b6103ac565b346118df576118c96118c0366004611850565b92919091613cbe565b6118d16103a2565b806118db81610449565b0390f35b6103a8565b90565b6118fb6118f6611900926118e4565b610743565b610552565b90565b61190d60406118e7565b90565b611918611903565b90565b3461194b5761192b366004610bcc565b611947611936611910565b61193e6103a2565b91829182610562565b0390f35b6103a8565b3461197e57611960366004610bcc565b611968614305565b6119706103a2565b8061197a81610449565b0390f35b6103a8565b61198c90611153565b9052565b61199990610ef1565b9052565b906080806119f5936119b55f8201515f860190610dcb565b6119c7602082015160208601906104a0565b6119d9604082015160408601906104b3565b6119eb60608201516060860190611983565b0151910190611990565b565b9190611a0a905f60a0850194019061199d565b565b34611a3d57611a39611a28611a2236600461041c565b90614442565b611a306103a2565b918291826119f7565b0390f35b6103a8565b34611a7357611a6f611a5e611a5836600461041c565b9061449a565b611a666103a2565b91829182610c20565b0390f35b6103a8565b34611aa657611a88366004610bcc565b611a906144c2565b611a986103a2565b80611aa281610449565b0390f35b6103a8565b34611adb57611ad7611ac6611ac1366004610482565b614513565b611ace6103a2565b91829182610562565b0390f35b6103a8565b9091606082840312611b1557611b12611afb845f85016103d3565b93611b098160208601610707565b93604001610707565b90565b6103ac565b92916020611b36611b3e9360408701908782035f89015261125f565b940190610555565b565b34611b7257611b59611b53366004611ae0565b916145b1565b90611b6e611b656103a2565b92839283611b1a565b0390f35b6103a8565b34611ba557611b8f611b8a3660046106a2565b614738565b611b976103a2565b80611ba181610449565b0390f35b6103a8565b34611bda57611bba366004610bcc565b611bd6611bc5614747565b611bcd6103a2565b91829182610cbb565b0390f35b6103a8565b909182601f83011215611c175781359160018060401b038311611c12576020019260208302840111611c0d57565b6105b5565b6105b1565b6105ad565b919091604081840312611c5b57611c35835f83016103d3565b92602082013560018060401b038111611c5657611c529201611bdf565b9091565b6103b0565b6103ac565b34611c8f57611c79611c73366004611c1c565b916147ce565b611c816103a2565b80611c8b81610449565b0390f35b6103a8565b91606083830312611cde57611cab825f85016103d3565b92611cb9836020830161040d565b92604082013560018060401b038111611cd957611cd69201611746565b90565b6103b0565b6103ac565b90611ced90610746565b5f5260205260405f2090565b90611d0390610ff6565b5f5260205260405f2090565b905090565b611d39611d3092602092611d27816109c9565b94858093611d0f565b938491016109d6565b0190565b90565b611d4c611d5191610552565b611d3d565b9052565b611d65611d6c9160209493611d14565b8092611d40565b0190565b611d84611d7b6103a2565b92839283611d55565b03902090565b611d9391611d70565b90565b611da6906008611dab9302610c6a565b61091f565b90565b90611db99154611d96565b90565b90611de492611dda611ddf92611dd56009955f96611ce3565b611cf9565b611d8a565b611dae565b90565b34611e1857611e14611e03611dfd366004611c94565b91611dbc565b611e0b6103a2565b91829182610562565b0390f35b6103a8565b909182601f83011215611e555781359160018060401b038311611e50576020019260018302840111611e4b57565b6105b5565b6105b1565b6105ad565b91606083830312611ea557611e71825f85016103d3565b92611e7f836020830161040d565b92604082013560018060401b038111611ea057611e9c9201611e1d565b9091565b6103b0565b6103ac565b34611edc57611ec6611ebd366004611e5a565b9291909161492d565b611ece6103a2565b80611ed881610449565b0390f35b6103a8565b611eea816104c0565b03611ef157565b5f80fd5b90503590611f0282611ee1565b565b91909160a081840312611f6e57611f1d835f83016103d3565b92602082013560018060401b038111611f695781611f3c918401611e1d565b929093611f66611f4f8460408501610707565b93611f5d8160608601610707565b93608001611ef5565b90565b6103b0565b6103ac565b34611fa857611f92611f86366004611f04565b94939093929192614c34565b611f9a6103a2565b80611fa481610449565b0390f35b6103a8565b34611fdb57611fc5611fc0366004610482565b615008565b611fcd6103a2565b80611fd781610449565b0390f35b6103a8565b909160608284031261201557612012611ffb845f85016103d3565b9361200981602086016103d3565b93604001610ab0565b90565b6103ac565b346120495761203361202d366004611fe0565b916150f7565b61203b6103a2565b8061204581610449565b0390f35b6103a8565b3461207d5761206761206136600461041c565b906152f7565b61206f6103a2565b8061207981610449565b0390f35b6103a8565b5190565b60209181520190565b60200190565b906120e3906060806120b4608084015f8701518582035f870152610d9a565b946120c760208201516020860190610dcb565b6120d960408201516040860190610dcb565b01519101906104c5565b90565b906120f091612095565b90565b60200190565b9061210d61210683612082565b8092612086565b908161211e6020830284019461208f565b925f915b83831061213157505050505090565b9091929394602061215361214d838560019503875289516120e6565b976120f3565b9301930191939290612122565b6121759160208201915f8184039101526120f9565b90565b346121a8576121a461219361218e366004610482565b61566c565b61219b6103a2565b91829182612160565b0390f35b6103a8565b346121db576121c56121c0366004610482565b6157be565b6121cd6103a2565b806121d781610449565b0390f35b6103a8565b6121ec600a5f90610c91565b90565b3461221f576121ff366004610bcc565b61221b61220a6121e0565b6122126103a2565b91829182610cbb565b0390f35b6103a8565b346122585761225461224361223a366004611e5a565b9291909161582b565b61224b6103a2565b91829182610562565b0390f35b6103a8565b9061226790610746565b5f5260205260405f2090565b61227f61228491611071565b610943565b90565b6122919054612273565b90565b61229f90600261225d565b6122aa5f8201611037565b916122c15f6122ba818501611064565b9301612287565b90565b6040906122ed6122f494969593966122e360608401985f850190610c13565b6020830190611117565b0190610a12565b565b346123295761232561231161230c366004610482565b612294565b61231c9391936103a2565b938493846122c4565b0390f35b6103a8565b3461235e5761233e366004610bcc565b61235a612349615860565b6123516103a2565b91829182610cbb565b0390f35b6103a8565b346123925761237c61237636600461041c565b906158a2565b6123846103a2565b8061238e81610449565b0390f35b6103a8565b346123c8576123c46123b36123ad36600461041c565b90615a6b565b6123bb6103a2565b91829182611368565b0390f35b6103a8565b346123fb576123e56123e03660046106a2565b615b6a565b6123ed6103a2565b806123f781610449565b0390f35b6103a8565b9190604083820312612428578061241c612425925f86016103d3565b93602001611ef5565b90565b6103ac565b3461245c57612446612440366004612400565b90615b75565b61244e6103a2565b8061245881610449565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b61248d612461565b90565b346124c0576124a0366004610bcc565b6124bc6124ab612485565b6124b36103a2565b91829182610f01565b0390f35b6103a8565b346124f4576124de6124d836600461041c565b90615bd4565b6124e66103a2565b806124f081610449565b0390f35b6103a8565b5f80fd5b61250961250e9161091a565b610c6e565b90565b61251b90546124fd565b90565b90565b61253561253061253a9261251e565b610743565b6103e2565b90565b61254690612521565b90565b5f1b90565b9061255f60018060a01b0391612549565b9181191691161790565b90565b9061258161257c61258892610ff6565b612569565b825461254e565b9055565b336125bf6125b97f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03612629576125d86125d3600783906113b3565b612511565b6125f26125ec6125e75f61253d565b6103ed565b916103ed565b0361260d5761260661260b929160076113b3565b61256c565b565b5f630ea075bf60e21b81528061262560048201610449565b0390fd5b5f6313f058cd60e11b81528061264160048201610449565b0390fd5b61264f60606116a8565b90565b5f90565b5f90565b5f90565b612666612645565b906020808084612674612652565b81520161267f612656565b81520161268a61265a565b81525050565b61269861265e565b90565b6126ad906126a7612690565b50615d35565b90565b5f90565b6126d56126db926126d05f936126c86126b0565b506003610fb8565b611002565b01610936565b90565b5090565b634e487b7160e01b5f52601160045260245ffd5b61270561270b91939293610552565b92610552565b91612717838202610552565b92818404149015171561272657565b6126e2565b6127369060046126f6565b90565b9061274c905f1990602003600802610c6a565b8154169055565b1b90565b9190600861277291029161276c5f1984612753565b92612753565b9181191691161790565b61279061278b61279592610552565b610743565b610552565b90565b90565b91906127b16127ac6127b99361277c565b612798565b908354612757565b9055565b6127cf916127c96126b0565b9161279b565b565b5b8181106127dd575050565b806127ea5f6001936127bd565b016127d2565b90612800905f1990600802610c6a565b191690565b8161280f916127f0565b906002021790565b905f9161282e61282682610811565b928354612805565b905555565b601f602091010490565b919290602082105f1461289657601f841160011461286657612860929350612805565b90555b5b565b509061288c61289193600161288361287d85610811565b92612833565b820191016127d1565b612817565b612863565b506128cd82936128a7600194610811565b6128c66128b385612833565b820192601f8616806128d8575b50612833565b01906127d1565b600202179055612864565b6128e490888603612739565b5f6128c0565b929091600160401b8211612945576020115f1461293657602081105f1461291a5761291491612805565b90555b5b565b60019160ff191661292a84610811565b55600202019055612917565b60019150600202019055612918565b6108bd565b908154612956816107de565b9081831161297f575b81831061296d575b50505050565b6129769361283d565b5f808080612967565b61298b838383876128ea565b61295f565b5f61299a9161294a565b565b634e487b7160e01b5f525f60045260245ffd5b905f036129c1576129bf90612990565b565b61299c565b60035f916129d6838083016129af565b6129e383600183016127bd565b6129f083600283016127bd565b0155565b905f03612a0657612a04906129c6565b565b61299c565b5b818110612a17575050565b80612a245f6004936129f4565b01612a0c565b9091828110612a39575b505050565b612a57612a51612a4b612a629561272b565b9261272b565b92610790565b918201910190612a0b565b5f8080612a34565b90600160401b8111612a8e5781612a83612a8c9361078c565b90828155612a2a565b565b6108bd565b5f612a9d91612a6a565b565b905f03612ab157612aaf90612a93565b565b61299c565b612aca612ac5612acf9261251e565b610743565b610552565b90565b6001612ade9101610552565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612b04570190565b612ae1565b90821015612b23576020612b209202810190612aed565b90565b610778565b903590600160200381360303821215612b68570180359060018060401b038211612b6357602001916001820236038313612b5e57565b612ae9565b612ae5565b612ae1565b91565b5090565b35612b7e816106f3565b90565b90565b5f5260205f2090565b5490565b612b9a81612b8d565b821015612bb457612bac600491612b84565b910201905f90565b610778565b5090565b9190601f8111612bcd575b505050565b612bd9612bfe93610811565b906020612be584612833565b83019310612c06575b612bf790612833565b01906127d1565b5f8080612bc8565b9150612bf781929050612bee565b91612c1f9082612bb9565b9060018060401b038211612cdc57612c4182612c3b85546107de565b85612bbd565b5f90601f8311600114612c7457918091612c63935f92612c68575b5050612805565b90555b565b90915001355f80612c5c565b601f19831691612c8385610811565b925f5b818110612cc457509160029391856001969410612caa575b50505002019055612c66565b612cba910135601f8416906127f0565b90555f8080612c9e565b91936020600181928787013581550195019201612c86565b6108bd565b90612cec9291612c14565b565b90612cfa5f1991612549565b9181191691161790565b90612d19612d14612d209261277c565b612798565b8254612cee565b9055565b35612d2e81611ee1565b90565b90612d3d60ff91612549565b9181191691161790565b612d50906104c0565b90565b90565b90612d6b612d66612d7292612d47565b612d53565b8254612d31565b9055565b90612dd460606003612dda94612d9a5f8201612d945f880188612b28565b91612ce1565b612db360018201612dad60208801612b74565b90612d04565b612dcc60028201612dc660408801612b74565b90612d04565b019201612d24565b90612d56565b565b9190612ded57612deb91612d76565b565b61299c565b90815491600160401b831015612e1d5782612e15916001612e1b95018155612b91565b90612ddc565b565b6108bd565b92919033612e4b612e45612e40612e3b600789906113b3565b612511565b6103ed565b916103ed565b03612fd957612e5b8183906126de565b612e74612e6e612e69611559565b610552565b91610552565b11612fbd57612e8e5f612e8960088790610762565b612a9f565b612e975f612ab6565b5b80612eb5612eaf612eaa8587906126de565b610552565b91610552565b1015612fb657612ee5612edf612ed9612ed085878691612b09565b5f810190612b28565b90612b6d565b90612b70565b612efe612ef8612ef3611903565b610552565b91610552565b11612f9a57612f1a6040612f1484868591612b09565b01612b74565b612f42612f3c612f376020612f3187898891612b09565b01612b74565b610552565b91610552565b10612f7e57612f7990612f74612f62612f5d60088990610762565b612b81565b612f6e85878591612b09565b90612df2565b612ad2565b612e98565b5f63a883435760e01b815280612f9660048201610449565b0390fd5b5f63680b6caf60e01b815280612fb260048201610449565b0390fd5b5050509050565b5f632b4406bd60e01b815280612fd560048201610449565b0390fd5b5f63115e986f60e31b815280612ff160048201610449565b0390fd5b90612fff90610746565b5f5260205260405f2090565b90565b61301790610ef1565b90565b6130239061091a565b90565b919061303c6130376130449361300e565b61301a565b908354612757565b9055565b5f90565b61305e91613058613048565b91613026565b565b5f600261307f92613073838083016127bd565b8260018201550161304c565b565b905f036130935761309190613060565b565b61299c565b60481b90565b906130ad60ff60481b91613098565b9181191691161790565b6130c090611147565b90565b90565b906130db6130d66130e2926130b7565b6130c3565b825461309e565b9055565b336131196131137f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b0361322f578161313961313361312e5f61253d565b6103ed565b916103ed565b146132135761316561315f61315861315360068590612ff5565b61300b565b8490615e13565b156104c0565b6131f7576131885f61318361317c60038590610fb8565b8590611002565b613081565b6131ab600260016131a561319e60038690610fb8565b8690611002565b016130c6565b906131df6131d97f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b93610746565b91610ff6565b916131e86103a2565b806131f281610449565b0390a3565b5f630ea075bf60e21b81528061320f60048201610449565b0390fd5b5f63d92e233d60e01b81528061322b60048201610449565b0390fd5b5f6313f058cd60e11b81528061324760048201610449565b0390fd5b61325c90613257615e4d565b61325e565b565b61326990600b61256c565b565b6132749061324b565b565b969594939291906132a361329d6132966132918b6006612ff5565b61300b565b3390615e9b565b156104c0565b6132b2576132b097613489565b565b5f6303fa1eaf60e41b8152806132ca60048201610449565b0390fd5b6132e26132dd6132e7926103b4565b610743565b610552565b90565b6132fe6132f961330392610552565b610743565b6103b4565b90565b91602061332792949361332060408201965f830190610c13565b0190610c13565b565b61333861333e91939293610552565b92610552565b820391821161334957565b6126e2565b60018060401b03811161336a576133666020916108b3565b0190565b6108bd565b9092919261338461337f8261334e565b6116a8565b938185526020850190828401116133a05761339e92611705565b565b6116e0565b6133b091369161336f565b90565b60200190565b5190565b949290979695939160e08601985f87016133d691610ef4565b602086016133e391610cae565b604085016133f091610c13565b606084016133fd91610c13565b6080830161340a91611117565b60a0820161341791610ef4565b60c00161342391610c13565b565b5f61190160f01b910152565b61343d60028092611d0f565b61344681613425565b0190565b90565b61345961345e91610ef1565b61344a565b9052565b602080939261347d61347661348594613431565b809261344d565b01809261344d565b0190565b96909591929394806134a361349d42610552565b916132ce565b11613623576134bb426134b5836132ce565b90613329565b6134d46134ce6134c9610d05565b6132ce565b91610552565b116135fb576135b792918861353b8861352c8b6135b1968b8b6135036134f8612461565b9633999592936133a5565b61351561350f826133b9565b916133b3565b2092936135206103a2565b988997602089016133bd565b602082018103825203826108d1565b61354d613547826133b9565b916133b3565b206135987f000000000000000000000000000000000000000000000000000000000000000061358961357d6103a2565b93849260208401613462565b602082018103825203826108d1565b6135aa6135a4826133b9565b916133b3565b20926133a5565b90615ed5565b6135c96135c3336103ed565b916103ed565b036135df576135dd94933391929394615fd0565b565b5f638baa579f60e01b8152806135f760048201610449565b0390fd5b613604426132ea565b9061361f5f9283926318355b7560e21b845260048401613306565b0390fd5b61362c426132ea565b906136475f9283926357ea02e960e01b845260048401613306565b0390fd5b9061365b97969594939291613276565b565b606090565b90602082820312613690575f82013560018060401b03811161368b57613688920161182d565b90565b6103b0565b6103ac565b906136ac916136a261365d565b5090810190613662565b90565b6136ce6136c96136d3926136c16126b0565b506005612ff5565b61300b565b6163f9565b90565b606090565b60018060401b0381116136f15760208091020190565b6108bd565b90613708613703836136db565b6116a8565b918252565b369037565b9061373761371f836136f6565b9260208061372d86936136db565b920191039061370d565b565b9061374382611228565b811015613754576020809102010190565b610778565b90613763906103ed565b9052565b906137706136d6565b5061378d61378861378360048590612ff5565b61300b565b6163f9565b9161379783613712565b916137a15f612ab6565b5b806137b56137af87610552565b91610552565b10156137fc576137f7906137f26137e06137d96137d460048890612ff5565b61300b565b8390616448565b6137ed8791849092613739565b613759565b612ad2565b6137a2565b5092505090565b5f90565b90613810613803565b50613832600161382c61382560038690610fb8565b8490611002565b01611091565b61384461383e5f611147565b91611147565b14918215613852575b505090565b613873925060019161386861386d926003610fb8565b611002565b01611091565b6138866138806001611147565b91611147565b145f8061384d565b6138b49061389a6136d6565b505f906138ae6138a861131b565b92612ab6565b906145b1565b5090565b939291906138e26138dc6138d56138d0886006612ff5565b61300b565b3390615e9b565b156104c0565b6138f1576138ef9461390d565b565b5f6303fa1eaf60e41b81528061390960048201610449565b0390fd5b9161391f949293913391929394615fd0565b565b9061392e949392916138b8565b565b9061395061394b61395593613943613803565b506006612ff5565b61300b565b615e9b565b90565b5f90565b61397e61398492613979600193613971613958565b506003610fb8565b611002565b01611091565b90565b61399090610fea565b90565b60018060401b0381116139a95760208091020190565b6108bd565b906139c06139bb83613993565b6116a8565b918252565b369037565b906139ef6139d7836139ae565b926020806139e58693613993565b92019103906139c5565b565b906139fb82610d87565b811015613a0c576020809102010190565b610778565b90565b5190565b90613a2282613a14565b811015613a33576020809102010190565b610778565b90613a4290610ef1565b9052565b606090565b90565b60209181520190565b905f9291805490613a71613a6a836107de565b8094613a4e565b916001811690815f14613ac85750600114613a8c575b505050565b613a999192939450610799565b915f925b818410613ab057505001905f8080613a87565b60018160209295939554848601520191019290613a9d565b92949550505060ff19168252151560200201905f8080613a87565b90613aed91613a57565b90565b90613b10613b0992613b006103a2565b93848092613ae3565b03836108d1565b565b613b1b90613af0565b90565b613b289051610ef1565b90565b613b359051610552565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613b6c60136020926109cd565b613b7581613b38565b0190565b613b91613b9f9260408301908382035f8501526109e1565b906020818303910152613b5f565b90565b92916020613bbe613bc69360408701908782035f8901526109e1565b940190610555565b565b905f9291805490613be2613bdb836107de565b80946109cd565b916001811690815f14613c395750600114613bfd575b505050565b613c0a9192939450610811565b915f925b818410613c2157505001905f8080613bf8565b60018160209295939554848601520191019290613c0e565b92949550505060ff19168252151560200201905f8080613bf8565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b613c8860176020926109cd565b613c9181613c54565b0190565b613cad613cbb9260408301908382035f850152613bc8565b906020818303910152613c7b565b90565b9293909333613cdd613cd7613cd230613987565b6103ed565b916103ed565b036142c457613cf6613cf160088690610762565b612b81565b94613d00826139ca565b94613d0a5f612ab6565b5b80613d1e613d1886610552565b91610552565b1015613d7157613d6c90613d67613d425f613d3a8a85906139f1565b510151613a11565b613d54613d4e826133b9565b916133b3565b20613d628a91849092613a18565b613a38565b612ad2565b613d0b565b509194909295613d8081612b8d565b613d92613d8c5f612ab6565b91610552565b1196613d9c613a46565b908861421c575b613dac5f612ab6565b5b80613dc0613dba8b610552565b91610552565b101561407f5760015f8b613eb3575b5090888789613de594613dea575b505050612ad2565b613dad565b825f613e28613e20613e3194613e1b613e136020613e0c613e369b8d906139f1565b5101613b2b565b976009611ce3565b611cf9565b9287906139f1565b51015190611d8a565b612d04565b88878990613e606020613e595f613e4e8789906139f1565b5101519587906139f1565b5101613b2b565b613e93613e8d7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd93610746565b93610ff6565b93613ea8613e9f6103a2565b92839283613ba2565b0390a3888789613ddd565b9a9095929199613ec25f612ab6565b5b80613ede613ed8613ed38a612b8d565b610552565b91610552565b101561406957613ef6613ef18d87613a18565b613b1e565b613f1a613f14613f0f613f0a8a8690613a18565b613b1e565b610ef1565b91610ef1565b14613f2d57613f2890612ad2565b613ec3565b8a919b929c5089613de59495988a926001908a613f576020613f50898b906139f1565b5101613b2b565b613f7f613f79613f746001613f6d868890612b91565b5001610936565b610552565b91610552565b10918888841561401f575b50505050613fb4575b613f9e905b156104c0565b613fad575b9394505050613dcf565b505f613fa3565b905082825f613fc48789906139f1565b51015191614010613ffe613ff87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936140076103a2565b91829182613b79565b0390a3613f9e5f919050613f93565b61405f93945061404d614059936140476020614040614054966002966139f1565b5101613b2b565b96612b91565b5001610936565b610552565b91610552565b118a5f8888613f8a565b5099909a8789613de5949598613f9e8d94613f98565b5097505092935093506140915f612ab6565b935b846140ae6140a86140a386612b8d565b610552565b91610552565b1015614215576140d46140ce60036140c7868990612b91565b500161095d565b156104c0565b61420a576140f66140f15f6140ea868990612b91565b5001613a4b565b613b12565b614108614102826133b9565b916133b3565b20905f966141155f612ab6565b5b8061413161412b61412686613a14565b610552565b91610552565b10156141f85761414a614145848390613a18565b613b1e565b61415c61415686610ef1565b91610ef1565b1461416f5761416a90612ad2565b614116565b5095909650614190915061418560015b156104c0565b614197575b5b612ad2565b9394614093565b82855f6141a5878590612b91565b5001916141f06141de6141d87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936141e76103a2565b91829182613c95565b0390a361418a565b5095909661419092506141859061417f565b94936141909061418b565b5050505050565b96939050614236614231839794999693612b8d565b6139ca565b976142405f612ab6565b5b8061425c6142566142518b612b8d565b610552565b91610552565b10156142b6576142b1906142ac6142876142825f61427b8d8690612b91565b5001613a4b565b613b12565b614299614293826133b9565b916133b3565b206142a78d91849092613a18565b613a38565b612ad2565b614241565b509295919497909396613da3565b5f635f0d793360e11b8152806142dc60048201610449565b0390fd5b6142e8615e4d565b6142f06142f2565b565b6143036142fe5f61253d565b6164e0565b565b61430d6142e0565b565b61431960a06116a8565b90565b5f90565b5f90565b5f90565b61433061430f565b906020808080808661434061431c565b81520161434b612652565b815201614356612656565b815201614361614320565b81520161436c614324565b81525050565b61437a614328565b90565b9061438790610552565b9052565b90614395906103b4565b9052565b906143a3906104ad565b9052565b906143b190611147565b9052565b9061443461442b60026143c661430f565b946143dd6143d55f8301610936565b5f880161437d565b6143f56143ec60018301611037565b6020880161438b565b61440d61440460018301611064565b60408801614399565b61442561441c60018301611091565b606088016143a7565b016110b5565b60808401613a38565b565b61443f906143b5565b90565b6144679161445d61446292614455614372565b506003610fb8565b611002565b614436565b90565b5f90565b9061447890610746565b5f5260205260405f2090565b9061448e90610ff6565b5f5260205260405f2090565b6144bf916144b56144ba926144ad61446a565b50600c61446e565b614484565b611037565b90565b6144ca6164f6565b6144d2615860565b6144e46144de836103ed565b916103ed565b036144f4576144f2906164e0565b565b61450f905f91829163118cdaa760e01b835260048301610cbb565b0390fd5b61453261452d614537926145256126b0565b506004612ff5565b61300b565b6163f9565b90565b61454490516104ad565b90565b61455b6145566145609261251e565b610743565b6104ad565b90565b61456d90516103b4565b90565b61458461457f614589926104ad565b610743565b610552565b90565b61459b6145a191939293610552565b92610552565b82018092116145ac57565b6126e2565b909291926145bd6136d6565b506145c66126b0565b506145d082615d35565b936145ed6145e86145e360058690612ff5565b61300b565b6163f9565b926145fa6020870161453a565b61460c6146065f614547565b916104ad565b1480156146fe575b80156146e3575b6146c9576146558661464f61464a602061464361463e5f6146b29b9c9d01614563565b6132ce565b930161453a565b614570565b906126f6565b918061467061466a61466561131b565b610552565b91610552565b115f146146c4575061468061131b565b5b61468c84829061458c565b61469e61469888610552565b91610552565b115f146146b55750845b909290919261652c565b91565b6146bf908461458c565b6146a8565b614681565b50505091506146df6146da5f612ab6565b613712565b9190565b50826146f76146f186610552565b91610552565b101561461b565b508361471261470c5f612ab6565b91610552565b14614614565b61472990614724615e4d565b61472b565b565b61473690600a61256c565b565b61474190614718565b565b5f90565b61474f614743565b506147595f612511565b90565b5090565b9190811015614770576020020190565b610778565b3561477f816103f9565b90565b5f80fd5b60e01b90565b5f91031261479657565b6103ac565b9160206147bc9294936147b560408201965f830190610c13565b0190610cae565b565b6147c66103a2565b3d5f823e3d90fd5b909291926147db5f612ab6565b5b806147f96147f36147ee85899061475c565b610552565b91610552565b10156148a85761480830613987565b9063ba1fb1038461482361481e868a8691614760565b614775565b93803b156148a3576148485f809461485361483c6103a2565b98899687958694614786565b84526004840161479b565b03925af191821561489e5761486d92614872575b50612ad2565b6147dc565b614891905f3d8111614897575b61488981836108d1565b81019061478c565b5f614867565b503d61487f565b6147be565b614782565b5050509050565b90565b906148c360018060401b0391612549565b9181191691161790565b90565b906148e56148e06148ec92610746565b6148cd565b82546148b2565b9055565b919061490a816149038161490f956109cd565b8095611705565b6108b3565b0190565b909161492a9260208301925f8185039101526148f0565b90565b3361494961494361493e600a612511565b6103ed565b916103ed565b03614a575761497561496f61496861496360058590612ff5565b61300b565b8490615e9b565b156104c0565b614a3b576149a561499a61499561498e60038590610fb8565b8590611002565b6148af565b6001600391016130c6565b6149c36149bc6149b760048490612ff5565b61300b565b8390616648565b506149eb6149d0426132ea565b6149e66149df600c859061446e565b8590614484565b6148d0565b909192614a21614a1b7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b93610ff6565b93614a36614a2d6103a2565b92839283614913565b0390a3565b5f63b651a05160e01b815280614a5360048201610449565b0390fd5b5f63cc71937960e01b815280614a6f60048201610449565b0390fd5b614a7d60806116a8565b90565b614a8b913691611710565b90565b52565b90614a9b906104c0565b9052565b5190565b90614aad816109c9565b9060018060401b038211614b6b57614acf82614ac985546107de565b85612bbd565b602090601f8311600114614b0357918091614af2935f92614af7575b5050612805565b90555b565b90915001515f80614aeb565b601f19831691614b1285610811565b925f5b818110614b5357509160029391856001969410614b39575b50505002019055614af5565b614b49910151601f8416906127f0565b90555f8080614b2d565b91936020600181928787015181550195019201614b15565b6108bd565b90614b7a91614aa3565b565b614b8690516104c0565b90565b90614be660606003614bec94614bac5f8201614ba65f8801614a9f565b90614b70565b614bc560018201614bbf60208801613b2b565b90612d04565b614bde60028201614bd860408801613b2b565b90612d04565b019201614b7c565b90612d56565b565b9190614bff57614bfd91614b89565b565b61299c565b90815491600160401b831015614c2f5782614c27916001614c2d95018155612b91565b90614bee565b565b6108bd565b919392909233614c5f614c59614c54614c4f600788906113b3565b612511565b6103ed565b916103ed565b03614d9a57614c78614c72858790612b6d565b90612b70565b614c91614c8b614c86611903565b610552565b91610552565b11614d7e5780614ca9614ca384610552565b91610552565b10614d6257614cc2614cbd60088590610762565b61078c565b614cdb614cd5614cd0611559565b610552565b91610552565b1015614d4657614d4495614d2d614d3692614d24614d1c614d08614d03614d3f996008610762565b612b81565b989996929496614d16614a73565b9a614a80565b5f8a01614a8e565b6020880161437d565b6040860161437d565b60608401614a91565b614c04565b565b5f632b4406bd60e01b815280614d5e60048201610449565b0390fd5b5f63a883435760e01b815280614d7a60048201610449565b0390fd5b5f63680b6caf60e01b815280614d9660048201610449565b0390fd5b5f63115e986f60e31b815280614db260048201610449565b0390fd5b614ddc614dd6614dcf614dca846006612ff5565b61300b565b3390615e9b565b156104c0565b614deb57614de990614e88565b565b5f6303fa1eaf60e41b815280614e0360048201610449565b0390fd5b60401b90565b90614e1c60ff60401b91614e07565b9181191691161790565b614e3a614e35614e3f926104ad565b610743565b6104ad565b90565b90565b90614e5a614e55614e6192614e26565b614e42565b8254614e0d565b9055565b916020614e86929493614e7f60408201965f83019061115f565b019061115f565b565b614ea6614ea1614e9a60038490610fb8565b3390611002565b6148af565b90614eb360018301611091565b9182614ec8614ec26003611147565b91611147565b14614fec5782614ee0614eda5f611147565b91611147565b148015614fd1575b614fcc57614f0f90614efd60018083016130c6565b6001614f085f614547565b9101614e45565b614f2d614f26614f2160048490612ff5565b61300b565b3390615e13565b508033614f63614f5d7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b91614f6c6103a2565b80614f7681610449565b0390a3903390916001614fb2614fac7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b93614fc7614fbe6103a2565b92839283614e65565b0390a3565b505050565b5082614fe6614fe06001611147565b91611147565b14614ee8565b5f637607924f60e11b81528061500460048201610449565b0390fd5b61501190614db6565b565b90565b61502a61502561502f92615013565b610743565b6103b4565b90565b90565b61504961504461504e92615032565b610743565b6104ad565b90565b61505b60606116a8565b90565b9061507361506e61507a92612d47565b612d53565b825461309e565b9055565b906150c060405f6150c6946150a082820161509a848801614563565b906148d0565b6150b88282016150b26020880161453a565b90614e45565b019201614b7c565b9061505e565b565b906150d29161507e565b565b9160206150f59294936150ee60408201965f830190610c13565b0190611117565b565b3361512a6151247f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b14158061525b575b61523f578161514a615144603c615016565b916103b4565b10615223578261516361515d6001615035565b916104ad565b10615207576151c1826151b0856151a76151895f6151836002899061225d565b01612287565b9161519e615195615051565b955f870161438b565b60208501614399565b60408301614a91565b6151bc6002849061225d565b6150c8565b90916151ed7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea56492610746565b926152026151f96103a2565b928392836150d4565b0390a2565b5f635fd2273960e01b81528061521f60048201610449565b0390fd5b5f63252847a560e11b81528061523b60048201610449565b0390fd5b5f63ea8e4eb560e01b81528061525760048201610449565b0390fd5b503361528261527c615277615272600786906113b3565b612511565b6103ed565b916103ed565b1415615132565b634e487b7160e01b5f52601260045260245ffd5b6152a96152af91610552565b91610552565b9081156152ba570490565b615289565b6152d36152ce6152d892610552565b610743565b6104ad565b90565b6152ef6152ea6152f49261251e565b610743565b6103b4565b90565b61531561531061530960038490610fb8565b8490611002565b6148af565b9061531f81615d35565b61532b60018401611091565b61533e6153386003611147565b91611147565b146155525761534e5f8401610936565b61536061535a5f612ab6565b91610552565b1461554c5761539661537d426153775f8701610936565b90613329565b61539061538b5f8501614563565b6132ce565b9061529d565b806153aa6153a460ff614570565b91610552565b115f1461553e575060ff5b90816153d46153ce6153c960018801611064565b6104ad565b916104ad565b116153e1575b5050505050565b6153ee8260018601614e45565b6154036153fa5f6152db565b600186016148d0565b61542161541b615416602085940161453a565b6104ad565b916104ad565b101580615517575b615434575b806153da565b61544f61544360018501611091565b936001600291016130c6565b61546d61546661546160048590612ff5565b61300b565b8590616648565b5081908490916154bb6154a96154a37f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d93610746565b93610ff6565b936154b26103a2565b91829182611613565b0390a391909160026154f66154f07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361550b6155026103a2565b92839283614e65565b0390a35f80808061542e565b5061552460018401611091565b6155376155316002611147565b91611147565b1415615429565b615547906152bf565b6153b5565b50505050565b50505050565b606090565b60018060401b0381116155735760208091020190565b6108bd565b9061558a6155858361555d565b6116a8565b918252565b61559960806116a8565b90565b906156036155fa60036155ad61558f565b946155c46155bc5f83016108f8565b5f8801614a8e565b6155dc6155d360018301610936565b6020880161437d565b6155f46155eb60028301610936565b6040880161437d565b0161095d565b60608401614a91565b565b61560e9061559c565b90565b9061561b8261078c565b61562481615578565b926156326020850191610790565b5f915b8383106156425750505050565b6004602060019261565285615605565b815201920192019190615635565b61566990615611565b90565b6156836156889161567b615558565b506008610762565b615660565b90565b6156b16156ab6156a461569f846006612ff5565b61300b565b3390615e9b565b156104c0565b6156c0576156be906156dc565b565b5f6303fa1eaf60e41b8152806156d860048201610449565b0390fd5b6156fa6156f56156ee60038490610fb8565b3390611002565b6148af565b9061570760018301611091565b918261571c6157166003611147565b91611147565b146157a257615730906001600491016130c6565b61574e61574761574260048490612ff5565b61300b565b3390616648565b509033909160046157886157827f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361579d6157946103a2565b92839283614e65565b0390a3565b5f637607924f60e11b8152806157ba60048201610449565b0390fd5b6157c79061568b565b565b9091826157d9816157e093611d0f565b8093611705565b0190565b6157f590602094936157fc936157c9565b8092611d40565b0190565b90916158179061580e6103a2565b938493846157e4565b03902090565b909161582892615800565b90565b92615850615858939261584b61585d966158436126b0565b506009611ce3565b611cf9565b91909161581d565b610936565b90565b615868614743565b506158736001612511565b90565b6158809051611147565b90565b90565b61589a61589561589f92615883565b610743565b610552565b90565b90336158c96158c36158be6158b9600787906113b3565b612511565b6103ed565b916103ed565b141580615a49575b615a2d576158f36158ee6158e760038590610fb8565b8390611002565b614436565b6158ff60608201615876565b61591261590c6003611147565b91611147565b03615956575b5061594e6159496159539361594161593a61593560058490612ff5565b61300b565b8590616648565b506004612ff5565b61300b565b616648565b50565b6159d3906159a661599661596986615d35565b61599061598b602061598461597f5f8601614563565b6132ce565b930161453a565b614570565b906126f6565b6159a0600a615886565b906126f6565b6159b15f8301613b2b565b6159c36159bd5f612ab6565b91610552565b1191826159f9575b5050156104c0565b6159dd575f615918565b5f6334a65f4560e11b8152806159f560048201610449565b0390fd5b615a24919250615a18615a1e91615a125f429201613b2b565b90613329565b92610552565b91610552565b10155f806159cb565b5f63ea8e4eb560e01b815280615a4560048201610449565b0390fd5b5033615a64615a5e615a59614747565b6103ed565b916103ed565b14156158d1565b90615a95615a9a91615a7b613803565b50615a90615a8885615d35565b946003610fb8565b611002565b614436565b615aa55f8201613b2b565b615ab7615ab15f612ab6565b91610552565b14615af257615ae8615ae35f615adc615aee94615ad683429201613b2b565b90613329565b9401614563565b6132ce565b91610552565b1090565b50505f90565b615b0990615b04615e4d565b615b0b565b565b615b1681600161256c565b615b1e614747565b90615b52615b4c7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093610ff6565b91610ff6565b91615b5b6103a2565b80615b6581610449565b0390a3565b615b7390615af8565b565b33615b9b615b95615b90615b8b600786906113b3565b612511565b6103ed565b916103ed565b03615bb8575f615bb0615bb69392600261225d565b0161505e565b565b5f63115e986f60e31b815280615bd060048201610449565b0390fd5b33615c07615c017f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03615cbe57615c33615c2d615c26615c2160068590612ff5565b61300b565b8490616648565b156104c0565b615ca257615c55615c4e615c4960048490612ff5565b61300b565b8390616648565b5090615c8a615c847f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e93610746565b91610ff6565b91615c936103a2565b80615c9d81610449565b0390a3565b5f63aba4733960e01b815280615cba60048201610449565b0390fd5b5f6313f058cd60e11b815280615cd660048201610449565b0390fd5b90615d27615d1e5f615cea612645565b94615d01615cf9838301611037565b83880161438b565b615d18615d0f838301611064565b60208801614399565b01612287565b60408401614a91565b565b615d3290615cda565b90565b615d4c615d5191615d44612690565b50600261225d565b615d29565b615d5c5f8201614563565b615d6e615d685f6152db565b916103b4565b14615db4575b615d806020820161453a565b615d92615d8c5f614547565b916104ad565b14615d9b575b90565b615daf615da66115fb565b60208301614399565b615d98565b615dc7615dbf610bfa565b5f830161438b565b615d74565b615dd590610fce565b90565b615dec615de7615df1926103e2565b610743565b610552565b90565b615e08615e03615e0d92610552565b612549565b610ef1565b90565b90565b90615e45615e3f615e3a615e355f615e4a96615e2d613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616704565b90565b615e55614747565b615e6e615e68615e636164f6565b6103ed565b916103ed565b03615e7557565b615e97615e806164f6565b5f91829163118cdaa760e01b835260048301610cbb565b0390fd5b90615ecd615ec7615ec2615ebd5f615ed296615eb5613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616767565b90565b615ef491615eeb91615ee5614743565b506167c3565b90929192616883565b90565b90615f0c615f07615f139261300e565b61301a565b8254612cee565b9055565b615f20906103b4565b60018060401b038114615f335760010190565b6126e2565b90565b615f4f615f4a615f5492615f38565b610743565b6104ad565b90565b916020615f78929493615f7160408201965f830190611117565b0190610555565b565b615f8390610fce565b90565b615f8f90615f7a565b90565b615f9b90610fea565b90565b604090615fc7615fce9496959396615fbd60608401985f850190610cae565b6020830190610c13565b0190610c13565b565b9492939193615ff3615fee615fe760038990610fb8565b8790611002565b6148af565b93615ffd87615d35565b9361600a60018701611091565b61601d6160176003611147565b91611147565b146163dd5761604061603961603460058b90612ff5565b61300b565b8890615e13565b50616115604061605260018901611091565b9661605f425f8b01612d04565b61608961606d8587906133a5565b61607f616079826133b9565b916133b3565b2060028b01615ef7565b61609e6160955f614547565b60018b01614e45565b6160bc60018a016160b66160b182611037565b615f17565b906148d0565b6160c4613958565b50856160d86160d25f614547565b916104ad565b145f14616399576160ef5f995b60018b91016130c6565b876161036160fd6002611147565b91611147565b148061637d575b61630f575b01614b7c565b806162eb575b6162d5575b505085918591924261616461615e6161587f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b994610746565b94610746565b94610ff6565b946161796161706103a2565b92839283615f57565b0390a48061618f61618984611147565b91611147565b0361627f575b50506161a1600b612511565b6161bb6161b56161b05f61253d565b6103ed565b916103ed565b036161c5575b5050565b6161df6161da6161d5600b612511565b615f86565b615f92565b9163d47853b69190926161f1426132ea565b92813b1561627a575f61621791616222829661620b6103a2565b98899788968795614786565b855260048501615f9e565b03925af1908161624e575b50155f14616249576001616244575b5b5f806161c1565b61623c565b61623d565b61626d905f3d8111616273575b61626581836108d1565b81019061478c565b5f61622d565b503d61625b565b614782565b838391926162b66162b07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b936162cb6162c26103a2565b92839283614e65565b0390a35f80616195565b6162e491889188909192616d38565b5f80616120565b506162f7818390612b70565b6163096163035f612ab6565b91610552565b1161611b565b61632c6163256163208d6004612ff5565b61300b565b8b90615e13565b508a8a61636261635c7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b9161636b6103a2565b8061637581610449565b0390a361610f565b508861639261638c6002611147565b91611147565b141561610a565b856163ad6163a76064615f3b565b916104ad565b105f146163c0576160ef6001995b6160e5565b6160ef6001996163d88d8d8b908b908a928c946169f2565b6163bb565b5f637607924f60e11b8152806163f560048201610449565b0390fd5b6164105f616415926164096126b0565b5001615e10565b616ef6565b90565b6164246164299161091a565b61277c565b90565b61644061643b61644592610552565b610743565b6103e2565b90565b61647361646e61647d936164695f61647895616462614743565b5001615e10565b616f64565b616418565b61642c565b610fea565b90565b919060086164a091029161649a60018060a01b0384612753565b92612753565b9181191691161790565b91906164c06164bb6164c893610ff6565b612569565b908354616480565b9055565b6164de916164d8614743565b916164aa565b565b6164f4906164ef5f60016164cc565b616f85565b565b6164fe614743565b503390565b61650c90610552565b5f19811461651a5760010190565b6126e2565b61652990516103ed565b90565b939192936165386136d6565b5061654c616547858490613329565b613712565b926165565f612ab6565b925b8061656b61656588610552565b91610552565b10156165d95761658f61658861658360058690612ff5565b61300b565b8290616448565b61659b84828a91616fe4565b6165af575b506165aa90612ad2565b616558565b6165aa91946165cd6165d2926165c88991849092613739565b613759565b616503565b93906165a0565b5094505091506165e882613712565b926165f25f612ab6565b5b8061660661660086610552565b91610552565b10156166425761663d90616638616626616621868490613739565b61651f565b6166338891849092613739565b613759565b612ad2565b6165f3565b50915050565b9061667a61667461666f61666a5f61667f96616662613803565b500194615dcc565b615dd8565b615df4565b91615e10565b61711c565b90565b90565b5f5260205f2090565b5490565b61669b8161668e565b8210156166b5576166ad600191616685565b910201905f90565b610778565b90815491600160401b8310156166e557826166dd9160016166e395018155616692565b90613026565b565b6108bd565b5490565b906166f89061300e565b5f5260205260405f2090565b61670c613803565b5061672161671b828490616767565b156104c0565b5f146167615761675761675c9261674361673c5f8501616682565b82906166ba565b60016167505f85016166ea565b93016166ee565b612d04565b600190565b50505f90565b61678591600161678092616779613803565b50016166ee565b610936565b6167976167915f612ab6565b91610552565b141590565b5f90565b90565b6167b76167b26167bc926167a0565b610743565b610552565b90565b5f90565b9190916167ce614743565b506167d761679c565b506167e0613048565b506167ea836133b9565b6167fd6167f760416167a3565b91610552565b145f146168445761683d9192616811613048565b5061681a613048565b506168236167bf565b506020810151606060408301519201515f1a90919261729b565b9192909190565b5061684e5f61253d565b9061686261685d6002946133b9565b615df4565b91929190565b6004111561687257565b611124565b9061688182616868565b565b806168966168905f616877565b91616877565b145f146168a1575050565b806168b56168af6001616877565b91616877565b145f146168d8575f63f645eedf60e01b8152806168d460048201610449565b0390fd5b806168ec6168e66002616877565b91616877565b145f1461691a576169166168ff83616418565b5f91829163fce698f760e01b835260048301610562565b0390fd5b61692d6169276003616877565b91616877565b146169355750565b616950905f9182916335e2f38360e21b835260048301610f01565b0390fd5b61696861696361696d926112fc565b610743565b6104ad565b90565b61697c616982916103b4565b916103b4565b90039060018060401b03821161699457565b6126e2565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6169cd601b6020926109cd565b6169d681616999565b0190565b6169ef9060208101905f8183039101526169c0565b90565b9350509250616a0a616a0460c8616954565b916104ad565b1015616a15575b5050565b616a1e426132ea565b616a3c616a37616a30600c859061446e565b8590614484565b611037565b80616a4f616a495f6152db565b916103b4565b14908115616ad5575b50616a64575b50616a11565b616a8390616a7e616a77600c859061446e565b8590614484565b6148d0565b90616ab7616ab17f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b91610ff6565b91616ac06103a2565b80616aca816169da565b0390a35f8080616a5e565b616ae0915082616970565b616af9616af3616aee610f6a565b6103b4565b916103b4565b10155f616a58565b90565b616b18616b13616b1d92616b01565b610743565b610552565b90565b90929192616b35616b30826116e4565b6116a8565b93818552602085019082840111616b5157616b4f926109d6565b565b6116e0565b9080601f83011215616b7457816020616b7193519101616b20565b90565b6105ad565b90505190616b86826106f3565b565b919091604081840312616bd957616b9f60406116a8565b925f8201519160018060401b038311616bd457616bc182616bcd948301616b56565b5f860152602001616b79565b6020830152565b6116dc565b6116d8565b929190616bf2616bed826116bd565b6116a8565b9381855260208086019202810191838311616c475781905b838210616c18575050505050565b815160018060401b038111616c4257602091616c378784938701616b88565b815201910190616c0a565b6105ad565b6105b5565b9080601f83011215616c6a57816020616c6793519101616bde565b90565b6105ad565b90602082820312616c9d575f82015160018060401b038111616c9857616c959201616c4c565b90565b6103b0565b6103ac565b60209181520190565b9190616cc581616cbe81616cca95616ca2565b8095611705565b6108b3565b0190565b9091616ce59260208301925f818503910152616cab565b90565b616cf2603261153d565b90565b949391606091616d3694616d21616d2e93616d1760808b01945f8c0190610c13565b60208a0190610cae565b8782036040890152610e18565b940190610555565b565b91616d44818590612b70565b616d56616d505f612ab6565b91610552565b14616ef057616d66818590612b70565b616d7a616d7461c350616b04565b91610552565b11616eea575f616d8861365d565b94616d9230613987565b616db46331e3bd1b949294616dbf616da86103a2565b96879586948594614786565b845260048401616cce565b03915afa80915f92616ec6575b50155f14616ebd57506001616eb8575b616de583610d87565b616dfe616df8616df3616ce8565b610552565b91610552565b115f14616eaa57616e0d616ce8565b5b616e1730613987565b906365a6936e93929490823b15616ea5575f94616e528692616e4794616e3b6103a2565b998a9889978896614786565b865260048601616cf5565b03925af19081616e79575b50155f14616e74576001616e6f575b5b565b616e6c565b616e6d565b616e98905f3d8111616e9e575b616e9081836108d1565b81019061478c565b5f616e5d565b503d616e86565b614782565b616eb383610d87565b616e0e565b505050565b90925091616ddc565b616ee39192503d805f833e616edb81836108d1565b810190616c6f565b905f616dcc565b50505050565b50505050565b5f616f0a91616f036126b0565b50016166ea565b90565b5f5260205f2090565b616f1f816166ea565b821015616f3957616f31600191616f0d565b910201905f90565b610778565b616f4e906008616f539302610c6a565b61109e565b90565b90616f619154616f3e565b90565b616f82915f616f7c92616f75613048565b5001616f16565b90616f56565b90565b616f8e5f612511565b616f98825f61256c565b90616fcc616fc67f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610ff6565b91610ff6565b91616fd56103a2565b80616fdf81610449565b0390a3565b616fec613803565b5061701461700e61700761700260068590612ff5565b61300b565b8490615e9b565b156104c0565b6170b6576170349161702a61702f926003610fb8565b611002565b614436565b61703f5f8201613b2b565b61705161704b5f612ab6565b91610552565b148015617090575b61708a5761707f617079617085926170735f429201613b2b565b90613329565b92610552565b91610552565b101590565b50505f90565b5061709d60608201615876565b6170b06170aa6003611147565b91611147565b14617059565b5050505f90565b6170d16170cc6170d692615032565b610743565b610552565b90565b634e487b7160e01b5f52603160045260245ffd5b6170f68161668e565b801561711757600190039061711461710e8383616692565b9061304c565b55565b6170d9565b617124613803565b5061713b6171366001830184906166ee565b610936565b908161714f6171495f612ab6565b91610552565b14155f1461721b576171cd9260016171c892846171765f96617170856170bd565b90613329565b6171936171848885016166ea565b61718d866170bd565b90613329565b816171a66171a083610552565b91610552565b036171d2575b5050506171c26171bd868301616682565b6170ed565b016166ee565b6127bd565b600190565b617213926172056171f16171eb61720e948c8901616f16565b90616f56565b936171ff85918c8901616f16565b90613026565b918585016166ee565b612d04565b5f80806171ac565b5050505f90565b90565b61723961723461723e92617222565b610743565b610552565b90565b61727661727d9461726c606094989795617262608086019a5f870190610ef4565b6020850190611117565b6040830190610ef4565b0190610ef4565b565b61729361728e6172989261251e565b612549565b610ef1565b90565b9392936172a6614743565b506172af61679c565b506172b8613048565b506172c285616418565b6172ea6172e46fa2a8918ca85bafe22016d0b997e4df60600160ff1b03617225565b91610552565b11617377579061730d602094955f949392936173046103a2565b94859485617241565b838052039060015afa15617372576173255f51612549565b8061734061733a6173355f61253d565b6103ed565b916103ed565b14617356575f916173505f61727f565b91929190565b506173605f61253d565b60019161736c5f61727f565b91929190565b6147be565b5050506173835f61253d565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:40670:58:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;15170:465::-;;;;;:::i;:::-;15257:24;;15362:95;15334:284;15475:35;15528:14;15334:284;15528:14;15560:13;15591;15599:4;15591:13;:::i;:::-;15334:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15311:317;;;;:::i;:::-;;;:::i;:::-;;15292:336;;15170:465::o;984:1491:2:-;;;;:::i;:::-;:::o;6415:40670:58:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:1:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:40670:58;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:2:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:40670:58:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:1:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b6124f9565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124c5565b612490565b61242d565b6123cd565b612397565b612363565b61232e565b6122f6565b612224565b6121ef565b6121ad565b612178565b61204e565b61201a565b611fad565b611f73565b611eaa565b611de7565b611c60565b611baa565b611b77565b611b40565b611aab565b611a78565b611a42565b611a0c565b611950565b61191b565b6118ad565b611672565b611628565b6115a6565b611571565b611503565b611470565b611417565b6113e2565b61137d565b611333565b6112c7565b6111f3565b6111b9565b610f83565b610f16565b610e97565b610d1e565b610cd0565b610c35565b610b8f565b610a62565b6106c0565b61066e565b61063a565b610577565b61051d565b61044e565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060401b031690565b6103c8816103b4565b036103cf57565b5f80fd5b905035906103e0826103bf565b565b60018060a01b031690565b6103f6906103e2565b90565b610402816103ed565b0361040957565b5f80fd5b9050359061041a826103f9565b565b91906040838203126104445780610438610441925f86016103d3565b9360200161040d565b90565b6103ac565b5f0190565b3461047d5761046761046136600461041c565b9061258c565b61046f6103a2565b8061047981610449565b0390f35b6103a8565b9060208282031261049b57610498915f016103d3565b90565b6103ac565b6104a9906103b4565b9052565b60ff1690565b6104bc906104ad565b9052565b151590565b6104ce906104c0565b9052565b90604080610506936104ea5f8201515f8601906104a0565b6104fc602082015160208601906104b3565b01519101906104c5565b565b919061051b905f606085019401906104d2565b565b3461054d57610549610538610533366004610482565b61269b565b6105406103a2565b91829182610508565b0390f35b6103a8565b90565b61055e90610552565b9052565b9190610575905f60208501940190610555565b565b346105a8576105a461059361058d36600461041c565b906126b4565b61059b6103a2565b91829182610562565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f15781359160018060401b0383116105ec5760200192602083028401116105e757565b6105b5565b6105b1565b6105ad565b9190916040818403126106355761060f835f83016103d3565b92602082013560018060401b0381116106305761062c92016105b9565b9091565b6103b0565b6103ac565b346106695761065361064d3660046105f6565b91612e22565b61065b6103a2565b8061066581610449565b0390f35b6103a8565b3461069d5761068761068136600461041c565b906130e6565b61068f6103a2565b8061069981610449565b0390f35b6103a8565b906020828203126106bb576106b8915f0161040d565b90565b6103ac565b346106ee576106d86106d33660046106a2565b61326b565b6106e06103a2565b806106ea81610449565b0390f35b6103a8565b6106fc81610552565b0361070357565b5f80fd5b90503590610714826106f3565b565b919060408382031261073e578061073261073b925f86016103d3565b93602001610707565b90565b6103ac565b90565b61075a61075561075f926103b4565b610743565b6103b4565b90565b9061076c90610746565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107ab8161078c565b8210156107c5576107bd600491610790565b910201905f90565b610778565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156107fe575b60208310146107f957565b6107ca565b91607f16916107ee565b60209181520190565b5f5260205f2090565b905f929180549061083461082d836107de565b8094610808565b916001811690815f1461088b575060011461084f575b505050565b61085c9192939450610811565b915f925b81841061087357505001905f808061084a565b60018160209295939554848601520191019290610860565b92949550505060ff19168252151560200201905f808061084a565b906108b09161081a565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108db906108b3565b810190811060018060401b038211176108f357604052565b6108bd565b90610918610911926109086103a2565b938480926108a6565b03836108d1565b565b5f1c90565b90565b61092e6109339161091a565b61091f565b90565b6109409054610922565b90565b60ff1690565b61095561095a9161091a565b610943565b90565b6109679054610949565b90565b610975906008610762565b9061097f8261078c565b8110156109c55761098f916107a2565b509061099c5f83016108f8565b916109a960018201610936565b916109c260036109bb60028501610936565b930161095d565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a00610a09602093610a0e936109f7816109c9565b938480936109cd565b958691016109d6565b6108b3565b0190565b610a1b906104c0565b9052565b610a59610a6094610a4f610a446060959998969960808601908682035f8801526109e1565b986020850190610555565b6040830190610555565b0190610a12565b565b34610a9757610a93610a7e610a78366004610716565b9061096a565b90610a8a9492946103a2565b94859485610a1f565b0390f35b6103a8565b610aa5816104ad565b03610aac57565b5f80fd5b90503590610abd82610a9c565b565b909182601f83011215610af75781359160018060401b038311610af2576020019260018302840111610aed57565b6105b5565b6105b1565b6105ad565b919060c083820312610b8a57610b14815f85016103d3565b92610b2282602083016103d3565b92610b308360408401610ab0565b92606083013560018060401b038111610b855781610b4f918501610abf565b929093610b5f83608083016103d3565b9260a082013560018060401b038111610b8057610b7c9201610abf565b9091565b6103b0565b6103b0565b6103ac565b34610bc757610bb1610ba2366004610afc565b9695909594919493929361364b565b610bb96103a2565b80610bc381610449565b0390f35b6103a8565b5f910312610bd657565b6103ac565b90565b610bf2610bed610bf792610bdb565b610743565b6103b4565b90565b610c0561012c610bde565b90565b610c10610bfa565b90565b610c1c906103b4565b9052565b9190610c33905f60208501940190610c13565b565b34610c6557610c45366004610bcc565b610c61610c50610c08565b610c586103a2565b91829182610c20565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c89906008610c8e9302610c6a565b610c6e565b90565b90610c9c9154610c79565b90565b610cab600b5f90610c91565b90565b610cb7906103ed565b9052565b9190610cce905f60208501940190610cae565b565b34610d0057610ce0366004610bcc565b610cfc610ceb610c9f565b610cf36103a2565b91829182610cbb565b0390f35b6103a8565b610d1061012c610bde565b90565b610d1b610d05565b90565b34610d4e57610d2e366004610bcc565b610d4a610d39610d13565b610d416103a2565b91829182610c20565b0390f35b6103a8565b90602082820312610d82575f82013560018060401b038111610d7d57610d799201610abf565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610db9610dc2602093610dc793610db0816109c9565b93848093610808565b958691016109d6565b6108b3565b0190565b610dd490610552565b9052565b90610e0290602080610df7604084015f8701518582035f870152610d9a565b940151910190610dcb565b90565b90610e0f91610dd8565b90565b60200190565b90610e2c610e2583610d87565b8092610d8b565b9081610e3d60208302840194610d94565b925f915b838310610e5057505050505090565b90919293946020610e72610e6c83856001950387528951610e05565b97610e12565b9301930191939290610e41565b610e949160208201915f818403910152610e18565b90565b34610ec857610ec4610eb3610ead366004610d53565b90613695565b610ebb6103a2565b91829182610e7f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610efd90610ef1565b9052565b9190610f14905f60208501940190610ef4565b565b34610f4657610f26366004610bcc565b610f42610f31610ecd565b610f396103a2565b91829182610f01565b0390f35b6103a8565b90565b610f62610f5d610f6792610f4b565b610743565b6103b4565b90565b610f75610e10610f4e565b90565b610f80610f6a565b90565b34610fb357610f93366004610bcc565b610faf610f9e610f78565b610fa66103a2565b91829182610c20565b0390f35b6103a8565b90610fc290610746565b5f5260205260405f2090565b610fe2610fdd610fe7926103e2565b610743565b6103e2565b90565b610ff390610fce565b90565b610fff90610fea565b90565b9061100c90610ff6565b5f5260205260405f2090565b60018060401b031690565b61102f6110349161091a565b611018565b90565b6110419054611023565b90565b60401c90565b60ff1690565b61105c61106191611044565b61104a565b90565b61106e9054611050565b90565b60481c90565b60ff1690565b61108961108e91611071565b611077565b90565b61109b905461107d565b90565b90565b6110ad6110b29161091a565b61109e565b90565b6110bf90546110a1565b90565b906110d16110d6926003610fb8565b611002565b6110e15f8201610936565b916110ee60018301611037565b916110fb60018201611064565b91611114600261110d60018501611091565b93016110b5565b90565b611120906104ad565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561114257565b611124565b9061115182611138565b565b61115c90611147565b90565b61116890611153565b9052565b909594926111b7946111a66111b09261119c60809661119260a088019c5f890190610555565b6020870190610c13565b6040850190611117565b606083019061115f565b0190610ef4565b565b346111ee576111ea6111d56111cf36600461041c565b906110c2565b916111e19593956103a2565b9586958661116c565b0390f35b6103a8565b346112235761121f61120e611209366004610482565b6136af565b6112166103a2565b91829182610562565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611244906103ed565b9052565b906112558160209361123b565b0190565b60200190565b9061127c61127661126f84611228565b809361122c565b92611235565b905f5b81811061128c5750505090565b9091926112a561129f6001928651611248565b94611259565b910191909161127f565b6112c49160208201915f81840391015261125f565b90565b346112f7576112f36112e26112dd366004610482565b613767565b6112ea6103a2565b918291826112af565b0390f35b6103a8565b90565b61131361130e611318926112fc565b610743565b610552565b90565b61132560c86112ff565b90565b61133061131b565b90565b3461136357611343366004610bcc565b61135f61134e611328565b6113566103a2565b91829182610562565b0390f35b6103a8565b919061137b905f60208501940190610a12565b565b346113ae576113aa61139961139336600461041c565b90613807565b6113a16103a2565b91829182611368565b0390f35b6103a8565b906113bd90610746565b5f5260205260405f2090565b6113df906113da6007915f926113b3565b610c91565b90565b346114125761140e6113fd6113f8366004610482565b6113c9565b6114056103a2565b91829182610cbb565b0390f35b6103a8565b346114475761144361143261142d366004610482565b61388e565b61143a6103a2565b918291826112af565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114a057611480366004610bcc565b61149c61148b61144c565b6114936103a2565b91829182610cbb565b0390f35b6103a8565b906080828203126114fe576114bc815f84016103d3565b926114ca82602085016103d3565b926114d88360408301610ab0565b92606082013560018060401b0381116114f9576114f59201610abf565b9091565b6103b0565b6103ac565b346115355761151f6115163660046114a5565b93929092613921565b6115276103a2565b8061153181610449565b0390f35b6103a8565b90565b61155161154c6115569261153a565b610743565b610552565b90565b611563603261153d565b90565b61156e611559565b90565b346115a157611581366004610bcc565b61159d61158c611566565b6115946103a2565b91829182610562565b0390f35b6103a8565b346115d7576115d36115c26115bc36600461041c565b90613930565b6115ca6103a2565b91829182611368565b0390f35b6103a8565b90565b6115f36115ee6115f8926115dc565b610743565b6104ad565b90565b61160560036115df565b90565b6116106115fb565b90565b9190611626905f60208501940190611117565b565b3461165857611638366004610bcc565b611654611643611608565b61164b6103a2565b91829182611613565b0390f35b6103a8565b9190611670905f6020850194019061115f565b565b346116a35761169f61168e61168836600461041c565b9061395c565b6116966103a2565b9182918261165d565b0390f35b6103a8565b906116bb6116b46103a2565b92836108d1565b565b60018060401b0381116116d35760208091020190565b6108bd565b5f80fd5b5f80fd5b5f80fd5b60018060401b038111611700576116fc6020916108b3565b0190565b6108bd565b90825f939282370152565b90929192611725611720826116e4565b6116a8565b938185526020850190828401116117415761173f92611705565b565b6116e0565b9080601f830112156117645781602061176193359101611710565b90565b6105ad565b9190916040818403126117ba5761178060406116a8565b925f8201359160018060401b0383116117b5576117a2826117ae948301611746565b5f860152602001610707565b6020830152565b6116dc565b6116d8565b9291906117d36117ce826116bd565b6116a8565b93818552602080860192028101918383116118285781905b8382106117f9575050505050565b813560018060401b038111611823576020916118188784938701611769565b8152019101906117eb565b6105ad565b6105b5565b9080601f8301121561184b57816020611848933591016117bf565b90565b6105ad565b6080818303126118a857611866825f83016103d3565b92611874836020840161040d565b9260408301359060018060401b0382116118a357611897816118a093860161182d565b93606001610707565b90565b6103b0565b6103ac565b346118df576118c96118c0366004611850565b92919091613cbe565b6118d16103a2565b806118db81610449565b0390f35b6103a8565b90565b6118fb6118f6611900926118e4565b610743565b610552565b90565b61190d60406118e7565b90565b611918611903565b90565b3461194b5761192b366004610bcc565b611947611936611910565b61193e6103a2565b91829182610562565b0390f35b6103a8565b3461197e57611960366004610bcc565b611968614305565b6119706103a2565b8061197a81610449565b0390f35b6103a8565b61198c90611153565b9052565b61199990610ef1565b9052565b906080806119f5936119b55f8201515f860190610dcb565b6119c7602082015160208601906104a0565b6119d9604082015160408601906104b3565b6119eb60608201516060860190611983565b0151910190611990565b565b9190611a0a905f60a0850194019061199d565b565b34611a3d57611a39611a28611a2236600461041c565b90614442565b611a306103a2565b918291826119f7565b0390f35b6103a8565b34611a7357611a6f611a5e611a5836600461041c565b9061449a565b611a666103a2565b91829182610c20565b0390f35b6103a8565b34611aa657611a88366004610bcc565b611a906144c2565b611a986103a2565b80611aa281610449565b0390f35b6103a8565b34611adb57611ad7611ac6611ac1366004610482565b614513565b611ace6103a2565b91829182610562565b0390f35b6103a8565b9091606082840312611b1557611b12611afb845f85016103d3565b93611b098160208601610707565b93604001610707565b90565b6103ac565b92916020611b36611b3e9360408701908782035f89015261125f565b940190610555565b565b34611b7257611b59611b53366004611ae0565b916145b1565b90611b6e611b656103a2565b92839283611b1a565b0390f35b6103a8565b34611ba557611b8f611b8a3660046106a2565b614738565b611b976103a2565b80611ba181610449565b0390f35b6103a8565b34611bda57611bba366004610bcc565b611bd6611bc5614747565b611bcd6103a2565b91829182610cbb565b0390f35b6103a8565b909182601f83011215611c175781359160018060401b038311611c12576020019260208302840111611c0d57565b6105b5565b6105b1565b6105ad565b919091604081840312611c5b57611c35835f83016103d3565b92602082013560018060401b038111611c5657611c529201611bdf565b9091565b6103b0565b6103ac565b34611c8f57611c79611c73366004611c1c565b916147ce565b611c816103a2565b80611c8b81610449565b0390f35b6103a8565b91606083830312611cde57611cab825f85016103d3565b92611cb9836020830161040d565b92604082013560018060401b038111611cd957611cd69201611746565b90565b6103b0565b6103ac565b90611ced90610746565b5f5260205260405f2090565b90611d0390610ff6565b5f5260205260405f2090565b905090565b611d39611d3092602092611d27816109c9565b94858093611d0f565b938491016109d6565b0190565b90565b611d4c611d5191610552565b611d3d565b9052565b611d65611d6c9160209493611d14565b8092611d40565b0190565b611d84611d7b6103a2565b92839283611d55565b03902090565b611d9391611d70565b90565b611da6906008611dab9302610c6a565b61091f565b90565b90611db99154611d96565b90565b90611de492611dda611ddf92611dd56009955f96611ce3565b611cf9565b611d8a565b611dae565b90565b34611e1857611e14611e03611dfd366004611c94565b91611dbc565b611e0b6103a2565b91829182610562565b0390f35b6103a8565b909182601f83011215611e555781359160018060401b038311611e50576020019260018302840111611e4b57565b6105b5565b6105b1565b6105ad565b91606083830312611ea557611e71825f85016103d3565b92611e7f836020830161040d565b92604082013560018060401b038111611ea057611e9c9201611e1d565b9091565b6103b0565b6103ac565b34611edc57611ec6611ebd366004611e5a565b9291909161492d565b611ece6103a2565b80611ed881610449565b0390f35b6103a8565b611eea816104c0565b03611ef157565b5f80fd5b90503590611f0282611ee1565b565b91909160a081840312611f6e57611f1d835f83016103d3565b92602082013560018060401b038111611f695781611f3c918401611e1d565b929093611f66611f4f8460408501610707565b93611f5d8160608601610707565b93608001611ef5565b90565b6103b0565b6103ac565b34611fa857611f92611f86366004611f04565b94939093929192614c34565b611f9a6103a2565b80611fa481610449565b0390f35b6103a8565b34611fdb57611fc5611fc0366004610482565b615008565b611fcd6103a2565b80611fd781610449565b0390f35b6103a8565b909160608284031261201557612012611ffb845f85016103d3565b9361200981602086016103d3565b93604001610ab0565b90565b6103ac565b346120495761203361202d366004611fe0565b916150f7565b61203b6103a2565b8061204581610449565b0390f35b6103a8565b3461207d5761206761206136600461041c565b906152f7565b61206f6103a2565b8061207981610449565b0390f35b6103a8565b5190565b60209181520190565b60200190565b906120e3906060806120b4608084015f8701518582035f870152610d9a565b946120c760208201516020860190610dcb565b6120d960408201516040860190610dcb565b01519101906104c5565b90565b906120f091612095565b90565b60200190565b9061210d61210683612082565b8092612086565b908161211e6020830284019461208f565b925f915b83831061213157505050505090565b9091929394602061215361214d838560019503875289516120e6565b976120f3565b9301930191939290612122565b6121759160208201915f8184039101526120f9565b90565b346121a8576121a461219361218e366004610482565b61566c565b61219b6103a2565b91829182612160565b0390f35b6103a8565b346121db576121c56121c0366004610482565b6157be565b6121cd6103a2565b806121d781610449565b0390f35b6103a8565b6121ec600a5f90610c91565b90565b3461221f576121ff366004610bcc565b61221b61220a6121e0565b6122126103a2565b91829182610cbb565b0390f35b6103a8565b346122585761225461224361223a366004611e5a565b9291909161582b565b61224b6103a2565b91829182610562565b0390f35b6103a8565b9061226790610746565b5f5260205260405f2090565b61227f61228491611071565b610943565b90565b6122919054612273565b90565b61229f90600261225d565b6122aa5f8201611037565b916122c15f6122ba818501611064565b9301612287565b90565b6040906122ed6122f494969593966122e360608401985f850190610c13565b6020830190611117565b0190610a12565b565b346123295761232561231161230c366004610482565b612294565b61231c9391936103a2565b938493846122c4565b0390f35b6103a8565b3461235e5761233e366004610bcc565b61235a612349615860565b6123516103a2565b91829182610cbb565b0390f35b6103a8565b346123925761237c61237636600461041c565b906158a2565b6123846103a2565b8061238e81610449565b0390f35b6103a8565b346123c8576123c46123b36123ad36600461041c565b90615a6b565b6123bb6103a2565b91829182611368565b0390f35b6103a8565b346123fb576123e56123e03660046106a2565b615b6a565b6123ed6103a2565b806123f781610449565b0390f35b6103a8565b9190604083820312612428578061241c612425925f86016103d3565b93602001611ef5565b90565b6103ac565b3461245c57612446612440366004612400565b90615b75565b61244e6103a2565b8061245881610449565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b61248d612461565b90565b346124c0576124a0366004610bcc565b6124bc6124ab612485565b6124b36103a2565b91829182610f01565b0390f35b6103a8565b346124f4576124de6124d836600461041c565b90615bd4565b6124e66103a2565b806124f081610449565b0390f35b6103a8565b5f80fd5b61250961250e9161091a565b610c6e565b90565b61251b90546124fd565b90565b90565b61253561253061253a9261251e565b610743565b6103e2565b90565b61254690612521565b90565b5f1b90565b9061255f60018060a01b0391612549565b9181191691161790565b90565b9061258161257c61258892610ff6565b612569565b825461254e565b9055565b336125bf6125b97f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03612629576125d86125d3600783906113b3565b612511565b6125f26125ec6125e75f61253d565b6103ed565b916103ed565b0361260d5761260661260b929160076113b3565b61256c565b565b5f630ea075bf60e21b81528061262560048201610449565b0390fd5b5f6313f058cd60e11b81528061264160048201610449565b0390fd5b61264f60606116a8565b90565b5f90565b5f90565b5f90565b612666612645565b906020808084612674612652565b81520161267f612656565b81520161268a61265a565b81525050565b61269861265e565b90565b6126ad906126a7612690565b50615d35565b90565b5f90565b6126d56126db926126d05f936126c86126b0565b506003610fb8565b611002565b01610936565b90565b5090565b634e487b7160e01b5f52601160045260245ffd5b61270561270b91939293610552565b92610552565b91612717838202610552565b92818404149015171561272657565b6126e2565b6127369060046126f6565b90565b9061274c905f1990602003600802610c6a565b8154169055565b1b90565b9190600861277291029161276c5f1984612753565b92612753565b9181191691161790565b61279061278b61279592610552565b610743565b610552565b90565b90565b91906127b16127ac6127b99361277c565b612798565b908354612757565b9055565b6127cf916127c96126b0565b9161279b565b565b5b8181106127dd575050565b806127ea5f6001936127bd565b016127d2565b90612800905f1990600802610c6a565b191690565b8161280f916127f0565b906002021790565b905f9161282e61282682610811565b928354612805565b905555565b601f602091010490565b919290602082105f1461289657601f841160011461286657612860929350612805565b90555b5b565b509061288c61289193600161288361287d85610811565b92612833565b820191016127d1565b612817565b612863565b506128cd82936128a7600194610811565b6128c66128b385612833565b820192601f8616806128d8575b50612833565b01906127d1565b600202179055612864565b6128e490888603612739565b5f6128c0565b929091600160401b8211612945576020115f1461293657602081105f1461291a5761291491612805565b90555b5b565b60019160ff191661292a84610811565b55600202019055612917565b60019150600202019055612918565b6108bd565b908154612956816107de565b9081831161297f575b81831061296d575b50505050565b6129769361283d565b5f808080612967565b61298b838383876128ea565b61295f565b5f61299a9161294a565b565b634e487b7160e01b5f525f60045260245ffd5b905f036129c1576129bf90612990565b565b61299c565b60035f916129d6838083016129af565b6129e383600183016127bd565b6129f083600283016127bd565b0155565b905f03612a0657612a04906129c6565b565b61299c565b5b818110612a17575050565b80612a245f6004936129f4565b01612a0c565b9091828110612a39575b505050565b612a57612a51612a4b612a629561272b565b9261272b565b92610790565b918201910190612a0b565b5f8080612a34565b90600160401b8111612a8e5781612a83612a8c9361078c565b90828155612a2a565b565b6108bd565b5f612a9d91612a6a565b565b905f03612ab157612aaf90612a93565b565b61299c565b612aca612ac5612acf9261251e565b610743565b610552565b90565b6001612ade9101610552565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612b04570190565b612ae1565b90821015612b23576020612b209202810190612aed565b90565b610778565b903590600160200381360303821215612b68570180359060018060401b038211612b6357602001916001820236038313612b5e57565b612ae9565b612ae5565b612ae1565b91565b5090565b35612b7e816106f3565b90565b90565b5f5260205f2090565b5490565b612b9a81612b8d565b821015612bb457612bac600491612b84565b910201905f90565b610778565b5090565b9190601f8111612bcd575b505050565b612bd9612bfe93610811565b906020612be584612833565b83019310612c06575b612bf790612833565b01906127d1565b5f8080612bc8565b9150612bf781929050612bee565b91612c1f9082612bb9565b9060018060401b038211612cdc57612c4182612c3b85546107de565b85612bbd565b5f90601f8311600114612c7457918091612c63935f92612c68575b5050612805565b90555b565b90915001355f80612c5c565b601f19831691612c8385610811565b925f5b818110612cc457509160029391856001969410612caa575b50505002019055612c66565b612cba910135601f8416906127f0565b90555f8080612c9e565b91936020600181928787013581550195019201612c86565b6108bd565b90612cec9291612c14565b565b90612cfa5f1991612549565b9181191691161790565b90612d19612d14612d209261277c565b612798565b8254612cee565b9055565b35612d2e81611ee1565b90565b90612d3d60ff91612549565b9181191691161790565b612d50906104c0565b90565b90565b90612d6b612d66612d7292612d47565b612d53565b8254612d31565b9055565b90612dd460606003612dda94612d9a5f8201612d945f880188612b28565b91612ce1565b612db360018201612dad60208801612b74565b90612d04565b612dcc60028201612dc660408801612b74565b90612d04565b019201612d24565b90612d56565b565b9190612ded57612deb91612d76565b565b61299c565b90815491600160401b831015612e1d5782612e15916001612e1b95018155612b91565b90612ddc565b565b6108bd565b92919033612e4b612e45612e40612e3b600789906113b3565b612511565b6103ed565b916103ed565b03612fd957612e5b8183906126de565b612e74612e6e612e69611559565b610552565b91610552565b11612fbd57612e8e5f612e8960088790610762565b612a9f565b612e975f612ab6565b5b80612eb5612eaf612eaa8587906126de565b610552565b91610552565b1015612fb657612ee5612edf612ed9612ed085878691612b09565b5f810190612b28565b90612b6d565b90612b70565b612efe612ef8612ef3611903565b610552565b91610552565b11612f9a57612f1a6040612f1484868591612b09565b01612b74565b612f42612f3c612f376020612f3187898891612b09565b01612b74565b610552565b91610552565b10612f7e57612f7990612f74612f62612f5d60088990610762565b612b81565b612f6e85878591612b09565b90612df2565b612ad2565b612e98565b5f63a883435760e01b815280612f9660048201610449565b0390fd5b5f63680b6caf60e01b815280612fb260048201610449565b0390fd5b5050509050565b5f632b4406bd60e01b815280612fd560048201610449565b0390fd5b5f63115e986f60e31b815280612ff160048201610449565b0390fd5b90612fff90610746565b5f5260205260405f2090565b90565b61301790610ef1565b90565b6130239061091a565b90565b919061303c6130376130449361300e565b61301a565b908354612757565b9055565b5f90565b61305e91613058613048565b91613026565b565b5f600261307f92613073838083016127bd565b8260018201550161304c565b565b905f036130935761309190613060565b565b61299c565b60481b90565b906130ad60ff60481b91613098565b9181191691161790565b6130c090611147565b90565b90565b906130db6130d66130e2926130b7565b6130c3565b825461309e565b9055565b336131196131137f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b0361322f578161313961313361312e5f61253d565b6103ed565b916103ed565b146132135761316561315f61315861315360068590612ff5565b61300b565b8490615e13565b156104c0565b6131f7576131885f61318361317c60038590610fb8565b8590611002565b613081565b6131ab600260016131a561319e60038690610fb8565b8690611002565b016130c6565b906131df6131d97f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b93610746565b91610ff6565b916131e86103a2565b806131f281610449565b0390a3565b5f630ea075bf60e21b81528061320f60048201610449565b0390fd5b5f63d92e233d60e01b81528061322b60048201610449565b0390fd5b5f6313f058cd60e11b81528061324760048201610449565b0390fd5b61325c90613257615e4d565b61325e565b565b61326990600b61256c565b565b6132749061324b565b565b969594939291906132a361329d6132966132918b6006612ff5565b61300b565b3390615e9b565b156104c0565b6132b2576132b097613489565b565b5f6303fa1eaf60e41b8152806132ca60048201610449565b0390fd5b6132e26132dd6132e7926103b4565b610743565b610552565b90565b6132fe6132f961330392610552565b610743565b6103b4565b90565b91602061332792949361332060408201965f830190610c13565b0190610c13565b565b61333861333e91939293610552565b92610552565b820391821161334957565b6126e2565b60018060401b03811161336a576133666020916108b3565b0190565b6108bd565b9092919261338461337f8261334e565b6116a8565b938185526020850190828401116133a05761339e92611705565b565b6116e0565b6133b091369161336f565b90565b60200190565b5190565b949290979695939160e08601985f87016133d691610ef4565b602086016133e391610cae565b604085016133f091610c13565b606084016133fd91610c13565b6080830161340a91611117565b60a0820161341791610ef4565b60c00161342391610c13565b565b5f61190160f01b910152565b61343d60028092611d0f565b61344681613425565b0190565b90565b61345961345e91610ef1565b61344a565b9052565b602080939261347d61347661348594613431565b809261344d565b01809261344d565b0190565b96909591929394806134a361349d42610552565b916132ce565b11613623576134bb426134b5836132ce565b90613329565b6134d46134ce6134c9610d05565b6132ce565b91610552565b116135fb576135b792918861353b8861352c8b6135b1968b8b6135036134f8612461565b9633999592936133a5565b61351561350f826133b9565b916133b3565b2092936135206103a2565b988997602089016133bd565b602082018103825203826108d1565b61354d613547826133b9565b916133b3565b206135987f000000000000000000000000000000000000000000000000000000000000000061358961357d6103a2565b93849260208401613462565b602082018103825203826108d1565b6135aa6135a4826133b9565b916133b3565b20926133a5565b90615ed5565b6135c96135c3336103ed565b916103ed565b036135df576135dd94933391929394615fd0565b565b5f638baa579f60e01b8152806135f760048201610449565b0390fd5b613604426132ea565b9061361f5f9283926318355b7560e21b845260048401613306565b0390fd5b61362c426132ea565b906136475f9283926357ea02e960e01b845260048401613306565b0390fd5b9061365b97969594939291613276565b565b606090565b90602082820312613690575f82013560018060401b03811161368b57613688920161182d565b90565b6103b0565b6103ac565b906136ac916136a261365d565b5090810190613662565b90565b6136ce6136c96136d3926136c16126b0565b506005612ff5565b61300b565b6163f9565b90565b606090565b60018060401b0381116136f15760208091020190565b6108bd565b90613708613703836136db565b6116a8565b918252565b369037565b9061373761371f836136f6565b9260208061372d86936136db565b920191039061370d565b565b9061374382611228565b811015613754576020809102010190565b610778565b90613763906103ed565b9052565b906137706136d6565b5061378d61378861378360048590612ff5565b61300b565b6163f9565b9161379783613712565b916137a15f612ab6565b5b806137b56137af87610552565b91610552565b10156137fc576137f7906137f26137e06137d96137d460048890612ff5565b61300b565b8390616448565b6137ed8791849092613739565b613759565b612ad2565b6137a2565b5092505090565b5f90565b90613810613803565b50613832600161382c61382560038690610fb8565b8490611002565b01611091565b61384461383e5f611147565b91611147565b14918215613852575b505090565b613873925060019161386861386d926003610fb8565b611002565b01611091565b6138866138806001611147565b91611147565b145f8061384d565b6138b49061389a6136d6565b505f906138ae6138a861131b565b92612ab6565b906145b1565b5090565b939291906138e26138dc6138d56138d0886006612ff5565b61300b565b3390615e9b565b156104c0565b6138f1576138ef9461390d565b565b5f6303fa1eaf60e41b81528061390960048201610449565b0390fd5b9161391f949293913391929394615fd0565b565b9061392e949392916138b8565b565b9061395061394b61395593613943613803565b506006612ff5565b61300b565b615e9b565b90565b5f90565b61397e61398492613979600193613971613958565b506003610fb8565b611002565b01611091565b90565b61399090610fea565b90565b60018060401b0381116139a95760208091020190565b6108bd565b906139c06139bb83613993565b6116a8565b918252565b369037565b906139ef6139d7836139ae565b926020806139e58693613993565b92019103906139c5565b565b906139fb82610d87565b811015613a0c576020809102010190565b610778565b90565b5190565b90613a2282613a14565b811015613a33576020809102010190565b610778565b90613a4290610ef1565b9052565b606090565b90565b60209181520190565b905f9291805490613a71613a6a836107de565b8094613a4e565b916001811690815f14613ac85750600114613a8c575b505050565b613a999192939450610799565b915f925b818410613ab057505001905f8080613a87565b60018160209295939554848601520191019290613a9d565b92949550505060ff19168252151560200201905f8080613a87565b90613aed91613a57565b90565b90613b10613b0992613b006103a2565b93848092613ae3565b03836108d1565b565b613b1b90613af0565b90565b613b289051610ef1565b90565b613b359051610552565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613b6c60136020926109cd565b613b7581613b38565b0190565b613b91613b9f9260408301908382035f8501526109e1565b906020818303910152613b5f565b90565b92916020613bbe613bc69360408701908782035f8901526109e1565b940190610555565b565b905f9291805490613be2613bdb836107de565b80946109cd565b916001811690815f14613c395750600114613bfd575b505050565b613c0a9192939450610811565b915f925b818410613c2157505001905f8080613bf8565b60018160209295939554848601520191019290613c0e565b92949550505060ff19168252151560200201905f8080613bf8565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b613c8860176020926109cd565b613c9181613c54565b0190565b613cad613cbb9260408301908382035f850152613bc8565b906020818303910152613c7b565b90565b9293909333613cdd613cd7613cd230613987565b6103ed565b916103ed565b036142c457613cf6613cf160088690610762565b612b81565b94613d00826139ca565b94613d0a5f612ab6565b5b80613d1e613d1886610552565b91610552565b1015613d7157613d6c90613d67613d425f613d3a8a85906139f1565b510151613a11565b613d54613d4e826133b9565b916133b3565b20613d628a91849092613a18565b613a38565b612ad2565b613d0b565b509194909295613d8081612b8d565b613d92613d8c5f612ab6565b91610552565b1196613d9c613a46565b908861421c575b613dac5f612ab6565b5b80613dc0613dba8b610552565b91610552565b101561407f5760015f8b613eb3575b5090888789613de594613dea575b505050612ad2565b613dad565b825f613e28613e20613e3194613e1b613e136020613e0c613e369b8d906139f1565b5101613b2b565b976009611ce3565b611cf9565b9287906139f1565b51015190611d8a565b612d04565b88878990613e606020613e595f613e4e8789906139f1565b5101519587906139f1565b5101613b2b565b613e93613e8d7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd93610746565b93610ff6565b93613ea8613e9f6103a2565b92839283613ba2565b0390a3888789613ddd565b9a9095929199613ec25f612ab6565b5b80613ede613ed8613ed38a612b8d565b610552565b91610552565b101561406957613ef6613ef18d87613a18565b613b1e565b613f1a613f14613f0f613f0a8a8690613a18565b613b1e565b610ef1565b91610ef1565b14613f2d57613f2890612ad2565b613ec3565b8a919b929c5089613de59495988a926001908a613f576020613f50898b906139f1565b5101613b2b565b613f7f613f79613f746001613f6d868890612b91565b5001610936565b610552565b91610552565b10918888841561401f575b50505050613fb4575b613f9e905b156104c0565b613fad575b9394505050613dcf565b505f613fa3565b905082825f613fc48789906139f1565b51015191614010613ffe613ff87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936140076103a2565b91829182613b79565b0390a3613f9e5f919050613f93565b61405f93945061404d614059936140476020614040614054966002966139f1565b5101613b2b565b96612b91565b5001610936565b610552565b91610552565b118a5f8888613f8a565b5099909a8789613de5949598613f9e8d94613f98565b5097505092935093506140915f612ab6565b935b846140ae6140a86140a386612b8d565b610552565b91610552565b1015614215576140d46140ce60036140c7868990612b91565b500161095d565b156104c0565b61420a576140f66140f15f6140ea868990612b91565b5001613a4b565b613b12565b614108614102826133b9565b916133b3565b20905f966141155f612ab6565b5b8061413161412b61412686613a14565b610552565b91610552565b10156141f85761414a614145848390613a18565b613b1e565b61415c61415686610ef1565b91610ef1565b1461416f5761416a90612ad2565b614116565b5095909650614190915061418560015b156104c0565b614197575b5b612ad2565b9394614093565b82855f6141a5878590612b91565b5001916141f06141de6141d87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936141e76103a2565b91829182613c95565b0390a361418a565b5095909661419092506141859061417f565b94936141909061418b565b5050505050565b96939050614236614231839794999693612b8d565b6139ca565b976142405f612ab6565b5b8061425c6142566142518b612b8d565b610552565b91610552565b10156142b6576142b1906142ac6142876142825f61427b8d8690612b91565b5001613a4b565b613b12565b614299614293826133b9565b916133b3565b206142a78d91849092613a18565b613a38565b612ad2565b614241565b509295919497909396613da3565b5f635f0d793360e11b8152806142dc60048201610449565b0390fd5b6142e8615e4d565b6142f06142f2565b565b6143036142fe5f61253d565b6164e0565b565b61430d6142e0565b565b61431960a06116a8565b90565b5f90565b5f90565b5f90565b61433061430f565b906020808080808661434061431c565b81520161434b612652565b815201614356612656565b815201614361614320565b81520161436c614324565b81525050565b61437a614328565b90565b9061438790610552565b9052565b90614395906103b4565b9052565b906143a3906104ad565b9052565b906143b190611147565b9052565b9061443461442b60026143c661430f565b946143dd6143d55f8301610936565b5f880161437d565b6143f56143ec60018301611037565b6020880161438b565b61440d61440460018301611064565b60408801614399565b61442561441c60018301611091565b606088016143a7565b016110b5565b60808401613a38565b565b61443f906143b5565b90565b6144679161445d61446292614455614372565b506003610fb8565b611002565b614436565b90565b5f90565b9061447890610746565b5f5260205260405f2090565b9061448e90610ff6565b5f5260205260405f2090565b6144bf916144b56144ba926144ad61446a565b50600c61446e565b614484565b611037565b90565b6144ca6164f6565b6144d2615860565b6144e46144de836103ed565b916103ed565b036144f4576144f2906164e0565b565b61450f905f91829163118cdaa760e01b835260048301610cbb565b0390fd5b61453261452d614537926145256126b0565b506004612ff5565b61300b565b6163f9565b90565b61454490516104ad565b90565b61455b6145566145609261251e565b610743565b6104ad565b90565b61456d90516103b4565b90565b61458461457f614589926104ad565b610743565b610552565b90565b61459b6145a191939293610552565b92610552565b82018092116145ac57565b6126e2565b909291926145bd6136d6565b506145c66126b0565b506145d082615d35565b936145ed6145e86145e360058690612ff5565b61300b565b6163f9565b926145fa6020870161453a565b61460c6146065f614547565b916104ad565b1480156146fe575b80156146e3575b6146c9576146558661464f61464a602061464361463e5f6146b29b9c9d01614563565b6132ce565b930161453a565b614570565b906126f6565b918061467061466a61466561131b565b610552565b91610552565b115f146146c4575061468061131b565b5b61468c84829061458c565b61469e61469888610552565b91610552565b115f146146b55750845b909290919261652c565b91565b6146bf908461458c565b6146a8565b614681565b50505091506146df6146da5f612ab6565b613712565b9190565b50826146f76146f186610552565b91610552565b101561461b565b508361471261470c5f612ab6565b91610552565b14614614565b61472990614724615e4d565b61472b565b565b61473690600a61256c565b565b61474190614718565b565b5f90565b61474f614743565b506147595f612511565b90565b5090565b9190811015614770576020020190565b610778565b3561477f816103f9565b90565b5f80fd5b60e01b90565b5f91031261479657565b6103ac565b9160206147bc9294936147b560408201965f830190610c13565b0190610cae565b565b6147c66103a2565b3d5f823e3d90fd5b909291926147db5f612ab6565b5b806147f96147f36147ee85899061475c565b610552565b91610552565b10156148a85761480830613987565b9063ba1fb1038461482361481e868a8691614760565b614775565b93803b156148a3576148485f809461485361483c6103a2565b98899687958694614786565b84526004840161479b565b03925af191821561489e5761486d92614872575b50612ad2565b6147dc565b614891905f3d8111614897575b61488981836108d1565b81019061478c565b5f614867565b503d61487f565b6147be565b614782565b5050509050565b90565b906148c360018060401b0391612549565b9181191691161790565b90565b906148e56148e06148ec92610746565b6148cd565b82546148b2565b9055565b919061490a816149038161490f956109cd565b8095611705565b6108b3565b0190565b909161492a9260208301925f8185039101526148f0565b90565b3361494961494361493e600a612511565b6103ed565b916103ed565b03614a575761497561496f61496861496360058590612ff5565b61300b565b8490615e9b565b156104c0565b614a3b576149a561499a61499561498e60038590610fb8565b8590611002565b6148af565b6001600391016130c6565b6149c36149bc6149b760048490612ff5565b61300b565b8390616648565b506149eb6149d0426132ea565b6149e66149df600c859061446e565b8590614484565b6148d0565b909192614a21614a1b7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b93610ff6565b93614a36614a2d6103a2565b92839283614913565b0390a3565b5f63b651a05160e01b815280614a5360048201610449565b0390fd5b5f63cc71937960e01b815280614a6f60048201610449565b0390fd5b614a7d60806116a8565b90565b614a8b913691611710565b90565b52565b90614a9b906104c0565b9052565b5190565b90614aad816109c9565b9060018060401b038211614b6b57614acf82614ac985546107de565b85612bbd565b602090601f8311600114614b0357918091614af2935f92614af7575b5050612805565b90555b565b90915001515f80614aeb565b601f19831691614b1285610811565b925f5b818110614b5357509160029391856001969410614b39575b50505002019055614af5565b614b49910151601f8416906127f0565b90555f8080614b2d565b91936020600181928787015181550195019201614b15565b6108bd565b90614b7a91614aa3565b565b614b8690516104c0565b90565b90614be660606003614bec94614bac5f8201614ba65f8801614a9f565b90614b70565b614bc560018201614bbf60208801613b2b565b90612d04565b614bde60028201614bd860408801613b2b565b90612d04565b019201614b7c565b90612d56565b565b9190614bff57614bfd91614b89565b565b61299c565b90815491600160401b831015614c2f5782614c27916001614c2d95018155612b91565b90614bee565b565b6108bd565b919392909233614c5f614c59614c54614c4f600788906113b3565b612511565b6103ed565b916103ed565b03614d9a57614c78614c72858790612b6d565b90612b70565b614c91614c8b614c86611903565b610552565b91610552565b11614d7e5780614ca9614ca384610552565b91610552565b10614d6257614cc2614cbd60088590610762565b61078c565b614cdb614cd5614cd0611559565b610552565b91610552565b1015614d4657614d4495614d2d614d3692614d24614d1c614d08614d03614d3f996008610762565b612b81565b989996929496614d16614a73565b9a614a80565b5f8a01614a8e565b6020880161437d565b6040860161437d565b60608401614a91565b614c04565b565b5f632b4406bd60e01b815280614d5e60048201610449565b0390fd5b5f63a883435760e01b815280614d7a60048201610449565b0390fd5b5f63680b6caf60e01b815280614d9660048201610449565b0390fd5b5f63115e986f60e31b815280614db260048201610449565b0390fd5b614ddc614dd6614dcf614dca846006612ff5565b61300b565b3390615e9b565b156104c0565b614deb57614de990614e88565b565b5f6303fa1eaf60e41b815280614e0360048201610449565b0390fd5b60401b90565b90614e1c60ff60401b91614e07565b9181191691161790565b614e3a614e35614e3f926104ad565b610743565b6104ad565b90565b90565b90614e5a614e55614e6192614e26565b614e42565b8254614e0d565b9055565b916020614e86929493614e7f60408201965f83019061115f565b019061115f565b565b614ea6614ea1614e9a60038490610fb8565b3390611002565b6148af565b90614eb360018301611091565b9182614ec8614ec26003611147565b91611147565b14614fec5782614ee0614eda5f611147565b91611147565b148015614fd1575b614fcc57614f0f90614efd60018083016130c6565b6001614f085f614547565b9101614e45565b614f2d614f26614f2160048490612ff5565b61300b565b3390615e13565b508033614f63614f5d7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b91614f6c6103a2565b80614f7681610449565b0390a3903390916001614fb2614fac7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b93614fc7614fbe6103a2565b92839283614e65565b0390a3565b505050565b5082614fe6614fe06001611147565b91611147565b14614ee8565b5f637607924f60e11b81528061500460048201610449565b0390fd5b61501190614db6565b565b90565b61502a61502561502f92615013565b610743565b6103b4565b90565b90565b61504961504461504e92615032565b610743565b6104ad565b90565b61505b60606116a8565b90565b9061507361506e61507a92612d47565b612d53565b825461309e565b9055565b906150c060405f6150c6946150a082820161509a848801614563565b906148d0565b6150b88282016150b26020880161453a565b90614e45565b019201614b7c565b9061505e565b565b906150d29161507e565b565b9160206150f59294936150ee60408201965f830190610c13565b0190611117565b565b3361512a6151247f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b14158061525b575b61523f578161514a615144603c615016565b916103b4565b10615223578261516361515d6001615035565b916104ad565b10615207576151c1826151b0856151a76151895f6151836002899061225d565b01612287565b9161519e615195615051565b955f870161438b565b60208501614399565b60408301614a91565b6151bc6002849061225d565b6150c8565b90916151ed7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea56492610746565b926152026151f96103a2565b928392836150d4565b0390a2565b5f635fd2273960e01b81528061521f60048201610449565b0390fd5b5f63252847a560e11b81528061523b60048201610449565b0390fd5b5f63ea8e4eb560e01b81528061525760048201610449565b0390fd5b503361528261527c615277615272600786906113b3565b612511565b6103ed565b916103ed565b1415615132565b634e487b7160e01b5f52601260045260245ffd5b6152a96152af91610552565b91610552565b9081156152ba570490565b615289565b6152d36152ce6152d892610552565b610743565b6104ad565b90565b6152ef6152ea6152f49261251e565b610743565b6103b4565b90565b61531561531061530960038490610fb8565b8490611002565b6148af565b9061531f81615d35565b61532b60018401611091565b61533e6153386003611147565b91611147565b146155525761534e5f8401610936565b61536061535a5f612ab6565b91610552565b1461554c5761539661537d426153775f8701610936565b90613329565b61539061538b5f8501614563565b6132ce565b9061529d565b806153aa6153a460ff614570565b91610552565b115f1461553e575060ff5b90816153d46153ce6153c960018801611064565b6104ad565b916104ad565b116153e1575b5050505050565b6153ee8260018601614e45565b6154036153fa5f6152db565b600186016148d0565b61542161541b615416602085940161453a565b6104ad565b916104ad565b101580615517575b615434575b806153da565b61544f61544360018501611091565b936001600291016130c6565b61546d61546661546160048590612ff5565b61300b565b8590616648565b5081908490916154bb6154a96154a37f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d93610746565b93610ff6565b936154b26103a2565b91829182611613565b0390a391909160026154f66154f07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361550b6155026103a2565b92839283614e65565b0390a35f80808061542e565b5061552460018401611091565b6155376155316002611147565b91611147565b1415615429565b615547906152bf565b6153b5565b50505050565b50505050565b606090565b60018060401b0381116155735760208091020190565b6108bd565b9061558a6155858361555d565b6116a8565b918252565b61559960806116a8565b90565b906156036155fa60036155ad61558f565b946155c46155bc5f83016108f8565b5f8801614a8e565b6155dc6155d360018301610936565b6020880161437d565b6155f46155eb60028301610936565b6040880161437d565b0161095d565b60608401614a91565b565b61560e9061559c565b90565b9061561b8261078c565b61562481615578565b926156326020850191610790565b5f915b8383106156425750505050565b6004602060019261565285615605565b815201920192019190615635565b61566990615611565b90565b6156836156889161567b615558565b506008610762565b615660565b90565b6156b16156ab6156a461569f846006612ff5565b61300b565b3390615e9b565b156104c0565b6156c0576156be906156dc565b565b5f6303fa1eaf60e41b8152806156d860048201610449565b0390fd5b6156fa6156f56156ee60038490610fb8565b3390611002565b6148af565b9061570760018301611091565b918261571c6157166003611147565b91611147565b146157a257615730906001600491016130c6565b61574e61574761574260048490612ff5565b61300b565b3390616648565b509033909160046157886157827f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361579d6157946103a2565b92839283614e65565b0390a3565b5f637607924f60e11b8152806157ba60048201610449565b0390fd5b6157c79061568b565b565b9091826157d9816157e093611d0f565b8093611705565b0190565b6157f590602094936157fc936157c9565b8092611d40565b0190565b90916158179061580e6103a2565b938493846157e4565b03902090565b909161582892615800565b90565b92615850615858939261584b61585d966158436126b0565b506009611ce3565b611cf9565b91909161581d565b610936565b90565b615868614743565b506158736001612511565b90565b6158809051611147565b90565b90565b61589a61589561589f92615883565b610743565b610552565b90565b90336158c96158c36158be6158b9600787906113b3565b612511565b6103ed565b916103ed565b141580615a49575b615a2d576158f36158ee6158e760038590610fb8565b8390611002565b614436565b6158ff60608201615876565b61591261590c6003611147565b91611147565b03615956575b5061594e6159496159539361594161593a61593560058490612ff5565b61300b565b8590616648565b506004612ff5565b61300b565b616648565b50565b6159d3906159a661599661596986615d35565b61599061598b602061598461597f5f8601614563565b6132ce565b930161453a565b614570565b906126f6565b6159a0600a615886565b906126f6565b6159b15f8301613b2b565b6159c36159bd5f612ab6565b91610552565b1191826159f9575b5050156104c0565b6159dd575f615918565b5f6334a65f4560e11b8152806159f560048201610449565b0390fd5b615a24919250615a18615a1e91615a125f429201613b2b565b90613329565b92610552565b91610552565b10155f806159cb565b5f63ea8e4eb560e01b815280615a4560048201610449565b0390fd5b5033615a64615a5e615a59614747565b6103ed565b916103ed565b14156158d1565b90615a95615a9a91615a7b613803565b50615a90615a8885615d35565b946003610fb8565b611002565b614436565b615aa55f8201613b2b565b615ab7615ab15f612ab6565b91610552565b14615af257615ae8615ae35f615adc615aee94615ad683429201613b2b565b90613329565b9401614563565b6132ce565b91610552565b1090565b50505f90565b615b0990615b04615e4d565b615b0b565b565b615b1681600161256c565b615b1e614747565b90615b52615b4c7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093610ff6565b91610ff6565b91615b5b6103a2565b80615b6581610449565b0390a3565b615b7390615af8565b565b33615b9b615b95615b90615b8b600786906113b3565b612511565b6103ed565b916103ed565b03615bb8575f615bb0615bb69392600261225d565b0161505e565b565b5f63115e986f60e31b815280615bd060048201610449565b0390fd5b33615c07615c017f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03615cbe57615c33615c2d615c26615c2160068590612ff5565b61300b565b8490616648565b156104c0565b615ca257615c55615c4e615c4960048490612ff5565b61300b565b8390616648565b5090615c8a615c847f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e93610746565b91610ff6565b91615c936103a2565b80615c9d81610449565b0390a3565b5f63aba4733960e01b815280615cba60048201610449565b0390fd5b5f6313f058cd60e11b815280615cd660048201610449565b0390fd5b90615d27615d1e5f615cea612645565b94615d01615cf9838301611037565b83880161438b565b615d18615d0f838301611064565b60208801614399565b01612287565b60408401614a91565b565b615d3290615cda565b90565b615d4c615d5191615d44612690565b50600261225d565b615d29565b615d5c5f8201614563565b615d6e615d685f6152db565b916103b4565b14615db4575b615d806020820161453a565b615d92615d8c5f614547565b916104ad565b14615d9b575b90565b615daf615da66115fb565b60208301614399565b615d98565b615dc7615dbf610bfa565b5f830161438b565b615d74565b615dd590610fce565b90565b615dec615de7615df1926103e2565b610743565b610552565b90565b615e08615e03615e0d92610552565b612549565b610ef1565b90565b90565b90615e45615e3f615e3a615e355f615e4a96615e2d613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616704565b90565b615e55614747565b615e6e615e68615e636164f6565b6103ed565b916103ed565b03615e7557565b615e97615e806164f6565b5f91829163118cdaa760e01b835260048301610cbb565b0390fd5b90615ecd615ec7615ec2615ebd5f615ed296615eb5613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616767565b90565b615ef491615eeb91615ee5614743565b506167c3565b90929192616883565b90565b90615f0c615f07615f139261300e565b61301a565b8254612cee565b9055565b615f20906103b4565b60018060401b038114615f335760010190565b6126e2565b90565b615f4f615f4a615f5492615f38565b610743565b6104ad565b90565b916020615f78929493615f7160408201965f830190611117565b0190610555565b565b615f8390610fce565b90565b615f8f90615f7a565b90565b615f9b90610fea565b90565b604090615fc7615fce9496959396615fbd60608401985f850190610cae565b6020830190610c13565b0190610c13565b565b9492939193615ff3615fee615fe760038990610fb8565b8790611002565b6148af565b93615ffd87615d35565b9361600a60018701611091565b61601d6160176003611147565b91611147565b146163dd5761604061603961603460058b90612ff5565b61300b565b8890615e13565b50616115604061605260018901611091565b9661605f425f8b01612d04565b61608961606d8587906133a5565b61607f616079826133b9565b916133b3565b2060028b01615ef7565b61609e6160955f614547565b60018b01614e45565b6160bc60018a016160b66160b182611037565b615f17565b906148d0565b6160c4613958565b50856160d86160d25f614547565b916104ad565b145f14616399576160ef5f995b60018b91016130c6565b876161036160fd6002611147565b91611147565b148061637d575b61630f575b01614b7c565b806162eb575b6162d5575b505085918591924261616461615e6161587f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b994610746565b94610746565b94610ff6565b946161796161706103a2565b92839283615f57565b0390a48061618f61618984611147565b91611147565b0361627f575b50506161a1600b612511565b6161bb6161b56161b05f61253d565b6103ed565b916103ed565b036161c5575b5050565b6161df6161da6161d5600b612511565b615f86565b615f92565b9163d47853b69190926161f1426132ea565b92813b1561627a575f61621791616222829661620b6103a2565b98899788968795614786565b855260048501615f9e565b03925af1908161624e575b50155f14616249576001616244575b5b5f806161c1565b61623c565b61623d565b61626d905f3d8111616273575b61626581836108d1565b81019061478c565b5f61622d565b503d61625b565b614782565b838391926162b66162b07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b936162cb6162c26103a2565b92839283614e65565b0390a35f80616195565b6162e491889188909192616d38565b5f80616120565b506162f7818390612b70565b6163096163035f612ab6565b91610552565b1161611b565b61632c6163256163208d6004612ff5565b61300b565b8b90615e13565b508a8a61636261635c7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b9161636b6103a2565b8061637581610449565b0390a361610f565b508861639261638c6002611147565b91611147565b141561610a565b856163ad6163a76064615f3b565b916104ad565b105f146163c0576160ef6001995b6160e5565b6160ef6001996163d88d8d8b908b908a928c946169f2565b6163bb565b5f637607924f60e11b8152806163f560048201610449565b0390fd5b6164105f616415926164096126b0565b5001615e10565b616ef6565b90565b6164246164299161091a565b61277c565b90565b61644061643b61644592610552565b610743565b6103e2565b90565b61647361646e61647d936164695f61647895616462614743565b5001615e10565b616f64565b616418565b61642c565b610fea565b90565b919060086164a091029161649a60018060a01b0384612753565b92612753565b9181191691161790565b91906164c06164bb6164c893610ff6565b612569565b908354616480565b9055565b6164de916164d8614743565b916164aa565b565b6164f4906164ef5f60016164cc565b616f85565b565b6164fe614743565b503390565b61650c90610552565b5f19811461651a5760010190565b6126e2565b61652990516103ed565b90565b939192936165386136d6565b5061654c616547858490613329565b613712565b926165565f612ab6565b925b8061656b61656588610552565b91610552565b10156165d95761658f61658861658360058690612ff5565b61300b565b8290616448565b61659b84828a91616fe4565b6165af575b506165aa90612ad2565b616558565b6165aa91946165cd6165d2926165c88991849092613739565b613759565b616503565b93906165a0565b5094505091506165e882613712565b926165f25f612ab6565b5b8061660661660086610552565b91610552565b10156166425761663d90616638616626616621868490613739565b61651f565b6166338891849092613739565b613759565b612ad2565b6165f3565b50915050565b9061667a61667461666f61666a5f61667f96616662613803565b500194615dcc565b615dd8565b615df4565b91615e10565b61711c565b90565b90565b5f5260205f2090565b5490565b61669b8161668e565b8210156166b5576166ad600191616685565b910201905f90565b610778565b90815491600160401b8310156166e557826166dd9160016166e395018155616692565b90613026565b565b6108bd565b5490565b906166f89061300e565b5f5260205260405f2090565b61670c613803565b5061672161671b828490616767565b156104c0565b5f146167615761675761675c9261674361673c5f8501616682565b82906166ba565b60016167505f85016166ea565b93016166ee565b612d04565b600190565b50505f90565b61678591600161678092616779613803565b50016166ee565b610936565b6167976167915f612ab6565b91610552565b141590565b5f90565b90565b6167b76167b26167bc926167a0565b610743565b610552565b90565b5f90565b9190916167ce614743565b506167d761679c565b506167e0613048565b506167ea836133b9565b6167fd6167f760416167a3565b91610552565b145f146168445761683d9192616811613048565b5061681a613048565b506168236167bf565b506020810151606060408301519201515f1a90919261729b565b9192909190565b5061684e5f61253d565b9061686261685d6002946133b9565b615df4565b91929190565b6004111561687257565b611124565b9061688182616868565b565b806168966168905f616877565b91616877565b145f146168a1575050565b806168b56168af6001616877565b91616877565b145f146168d8575f63f645eedf60e01b8152806168d460048201610449565b0390fd5b806168ec6168e66002616877565b91616877565b145f1461691a576169166168ff83616418565b5f91829163fce698f760e01b835260048301610562565b0390fd5b61692d6169276003616877565b91616877565b146169355750565b616950905f9182916335e2f38360e21b835260048301610f01565b0390fd5b61696861696361696d926112fc565b610743565b6104ad565b90565b61697c616982916103b4565b916103b4565b90039060018060401b03821161699457565b6126e2565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6169cd601b6020926109cd565b6169d681616999565b0190565b6169ef9060208101905f8183039101526169c0565b90565b9350509250616a0a616a0460c8616954565b916104ad565b1015616a15575b5050565b616a1e426132ea565b616a3c616a37616a30600c859061446e565b8590614484565b611037565b80616a4f616a495f6152db565b916103b4565b14908115616ad5575b50616a64575b50616a11565b616a8390616a7e616a77600c859061446e565b8590614484565b6148d0565b90616ab7616ab17f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b91610ff6565b91616ac06103a2565b80616aca816169da565b0390a35f8080616a5e565b616ae0915082616970565b616af9616af3616aee610f6a565b6103b4565b916103b4565b10155f616a58565b90565b616b18616b13616b1d92616b01565b610743565b610552565b90565b90929192616b35616b30826116e4565b6116a8565b93818552602085019082840111616b5157616b4f926109d6565b565b6116e0565b9080601f83011215616b7457816020616b7193519101616b20565b90565b6105ad565b90505190616b86826106f3565b565b919091604081840312616bd957616b9f60406116a8565b925f8201519160018060401b038311616bd457616bc182616bcd948301616b56565b5f860152602001616b79565b6020830152565b6116dc565b6116d8565b929190616bf2616bed826116bd565b6116a8565b9381855260208086019202810191838311616c475781905b838210616c18575050505050565b815160018060401b038111616c4257602091616c378784938701616b88565b815201910190616c0a565b6105ad565b6105b5565b9080601f83011215616c6a57816020616c6793519101616bde565b90565b6105ad565b90602082820312616c9d575f82015160018060401b038111616c9857616c959201616c4c565b90565b6103b0565b6103ac565b60209181520190565b9190616cc581616cbe81616cca95616ca2565b8095611705565b6108b3565b0190565b9091616ce59260208301925f818503910152616cab565b90565b616cf2603261153d565b90565b949391606091616d3694616d21616d2e93616d1760808b01945f8c0190610c13565b60208a0190610cae565b8782036040890152610e18565b940190610555565b565b91616d44818590612b70565b616d56616d505f612ab6565b91610552565b14616ef057616d66818590612b70565b616d7a616d7461c350616b04565b91610552565b11616eea575f616d8861365d565b94616d9230613987565b616db46331e3bd1b949294616dbf616da86103a2565b96879586948594614786565b845260048401616cce565b03915afa80915f92616ec6575b50155f14616ebd57506001616eb8575b616de583610d87565b616dfe616df8616df3616ce8565b610552565b91610552565b115f14616eaa57616e0d616ce8565b5b616e1730613987565b906365a6936e93929490823b15616ea5575f94616e528692616e4794616e3b6103a2565b998a9889978896614786565b865260048601616cf5565b03925af19081616e79575b50155f14616e74576001616e6f575b5b565b616e6c565b616e6d565b616e98905f3d8111616e9e575b616e9081836108d1565b81019061478c565b5f616e5d565b503d616e86565b614782565b616eb383610d87565b616e0e565b505050565b90925091616ddc565b616ee39192503d805f833e616edb81836108d1565b810190616c6f565b905f616dcc565b50505050565b50505050565b5f616f0a91616f036126b0565b50016166ea565b90565b5f5260205f2090565b616f1f816166ea565b821015616f3957616f31600191616f0d565b910201905f90565b610778565b616f4e906008616f539302610c6a565b61109e565b90565b90616f619154616f3e565b90565b616f82915f616f7c92616f75613048565b5001616f16565b90616f56565b90565b616f8e5f612511565b616f98825f61256c565b90616fcc616fc67f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610ff6565b91610ff6565b91616fd56103a2565b80616fdf81610449565b0390a3565b616fec613803565b5061701461700e61700761700260068590612ff5565b61300b565b8490615e9b565b156104c0565b6170b6576170349161702a61702f926003610fb8565b611002565b614436565b61703f5f8201613b2b565b61705161704b5f612ab6565b91610552565b148015617090575b61708a5761707f617079617085926170735f429201613b2b565b90613329565b92610552565b91610552565b101590565b50505f90565b5061709d60608201615876565b6170b06170aa6003611147565b91611147565b14617059565b5050505f90565b6170d16170cc6170d692615032565b610743565b610552565b90565b634e487b7160e01b5f52603160045260245ffd5b6170f68161668e565b801561711757600190039061711461710e8383616692565b9061304c565b55565b6170d9565b617124613803565b5061713b6171366001830184906166ee565b610936565b908161714f6171495f612ab6565b91610552565b14155f1461721b576171cd9260016171c892846171765f96617170856170bd565b90613329565b6171936171848885016166ea565b61718d866170bd565b90613329565b816171a66171a083610552565b91610552565b036171d2575b5050506171c26171bd868301616682565b6170ed565b016166ee565b6127bd565b600190565b617213926172056171f16171eb61720e948c8901616f16565b90616f56565b936171ff85918c8901616f16565b90613026565b918585016166ee565b612d04565b5f80806171ac565b5050505f90565b90565b61723961723461723e92617222565b610743565b610552565b90565b61727661727d9461726c606094989795617262608086019a5f870190610ef4565b6020850190611117565b6040830190610ef4565b0190610ef4565b565b61729361728e6172989261251e565b612549565b610ef1565b90565b9392936172a6614743565b506172af61679c565b506172b8613048565b506172c285616418565b6172ea6172e46fa2a8918ca85bafe22016d0b997e4df60600160ff1b03617225565b91610552565b11617377579061730d602094955f949392936173046103a2565b94859485617241565b838052039060015afa15617372576173255f51612549565b8061734061733a6173355f61253d565b6103ed565b916103ed565b14617356575f916173505f61727f565b91929190565b506173605f61253d565b60019161736c5f61727f565b91929190565b6147be565b5050506173835f61253d565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:40670:58:-:0;;;;;;;;;-1:-1:-1;6415:40670:58;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;13770:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:40670;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7852:61::-;7904:9;;;:::i;:::-;7852:61;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;14334:30::-;;;;;;:::i;:::-;;:::o;6415:40670::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;16290:52::-;16333:9;;;:::i;:::-;16290:52;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8134:41::-;;;:::o;6415:40670::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;14462:53::-;14508:7;;;:::i;:::-;14462:53;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;13008:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:40670::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:40670:58;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;41822:43::-;41862:3;;;:::i;:::-;41822:43;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;13640:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14155:35::-;;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;34960:51::-;35009:2;;;:::i;:::-;34960:51;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7981:55::-;8035:1;;;:::i;:::-;7981:55;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;35135:51::-;35184:2;;;:::i;:::-;35135:51;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;13926:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;14241:29::-;;;;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;12868:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8448:189::-;8493:144;8448:189;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;32229:264::-;32315:10;:24;;32329:10;32315:24;:::i;:::-;;;:::i;:::-;;32311:53;;32378:24;;:13;32392:9;32378:24;;:::i;:::-;;:::i;:::-;:38;;32406:10;32414:1;32406:10;:::i;:::-;32378:38;:::i;:::-;;;:::i;:::-;;32374:70;;32454:24;:32;32481:5;32454:13;;:24;:::i;:::-;:32;:::i;:::-;32229:264::o;32374:70::-;32425:19;;;;;;;;;;;;:::i;:::-;;;;32311:53;32348:16;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;39626:147::-;39745:21;39626:147;39704:22;;:::i;:::-;39756:9;39745:21;:::i;:::-;39738:28;:::o;6415:40670::-;;;:::o;38526:176::-;38646:35;:49;38526:176;38646:25;:49;38526:176;38620:7;;:::i;:::-;38646:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;38639:56;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;6415:40670:58;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;35961:638::-;;;;36082:10;:38;;36096:24;;:13;36110:9;36096:24;;:::i;:::-;;:::i;:::-;36082:38;:::i;:::-;;;:::i;:::-;;36078:68;;36160:18;:11;;:18;;:::i;:::-;:43;;36181:22;;:::i;:::-;36160:43;:::i;:::-;;;:::i;:::-;;36156:76;;36242:32;;36249:25;:14;36264:9;36249:25;;:::i;:::-;36242:32;:::i;:::-;36289:13;36301:1;36289:13;:::i;:::-;36328:3;36304:1;:22;;36308:18;:11;;:18;;:::i;:::-;36304:22;:::i;:::-;;;:::i;:::-;;;;;36351:33;:26;36357:19;:14;:11;;36369:1;36357:14;;:::i;:::-;:19;;;;;:::i;:::-;36351:26;;:::i;:::-;:33;;:::i;:::-;:58;;36387:22;;:::i;:::-;36351:58;:::i;:::-;;;:::i;:::-;;36347:84;;36449:23;;:14;:11;;36461:1;36449:14;;:::i;:::-;:23;;:::i;:::-;:49;;36475:23;;:14;:11;;36487:1;36475:14;;:::i;:::-;:23;;:::i;:::-;36449:49;:::i;:::-;;;:::i;:::-;;36445:77;;36328:3;36536:14;:46;:30;:25;:14;36551:9;36536:25;;:::i;:::-;:30;:::i;:::-;36567:14;:11;;36579:1;36567:14;;:::i;:::-;36536:46;;:::i;:::-;36328:3;:::i;:::-;36289:13;;36445:77;36507:15;;;;;;;;;;;;:::i;:::-;;;;36347:84;36418:13;;;;;;;;;;;;:::i;:::-;;;;36304:22;;;;;;35961:638::o;36156:76::-;36212:20;;;;;;;;;;;;:::i;:::-;;;;36078:68;36129:17;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;32736:1039::-;32830:10;:24;;32844:10;32830:24;:::i;:::-;;;:::i;:::-;;32826:53;;32893:8;:22;;32905:10;32913:1;32905:10;:::i;:::-;32893:22;:::i;:::-;;;:::i;:::-;;32889:48;;32951:46;32952:45;:35;:31;:20;32973:9;32952:31;;:::i;:::-;:35;:::i;:::-;32988:8;32952:45;;:::i;:::-;32951:46;;:::i;:::-;32947:78;;33418:42;;33425:35;:25;:14;33440:9;33425:25;;:::i;:::-;33451:8;33425:35;;:::i;:::-;33418:42;:::i;:::-;33651:63;33696:18;33651:42;:35;:25;:14;33666:9;33651:25;;:::i;:::-;33677:8;33651:35;;:::i;:::-;:42;:63;:::i;:::-;33759:8;33729:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;32736:1039::o;32947:78::-;33006:19;32425;;;33006;;;;;;;;:::i;:::-;;;;32889:48;32924:13;;;;;;;;;;;;:::i;:::-;;;;32826:53;32863:16;32348;;;32863;;;;;;;;:::i;:::-;;;;1500:62:1;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;36902:188:58:-;37057:26;36902:188;37057:26;;:::i;:::-;36902:188::o;:::-;;;;:::i;:::-;:::o;7140:167::-;;;;;;;;7204:53;7205:52;:40;:31;17181:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;16913:1038::-;;;;;;;;17210:9;:27;;17222:15;17210:27;:::i;:::-;;;:::i;:::-;;17206:95;;17315:27;:15;:27;17333:9;17315:27;:::i;:::-;;;:::i;:::-;:47;;17345:17;;:::i;:::-;17315:47;:::i;:::-;;;:::i;:::-;;17311:135;;17773:25;17528:18;;;17500:139;17528:18;17500:139;17528:18;17773:25;17528:18;;;17596;17528;;:::i;:::-;17548:10;;17560:9;17571:11;17584:10;17606:7;17596:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17616:9;17500:139;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;17477:172;;;;:::i;:::-;;;:::i;:::-;;17686:58;17715:16;17686:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;17676:69;;;;:::i;:::-;;;:::i;:::-;;17788:9;17773:25;:::i;:::-;;;:::i;:::-;17812:20;;17822:10;17812:20;:::i;:::-;;;:::i;:::-;;17808:51;;17936:7;17888:9;17899:11;17912:10;17924;17936:7;;;;:::i;:::-;16913:1038::o;17808:51::-;17841:18;;;;;;;;;;;;:::i;:::-;;;;17311:135;17411:23;17418:15;17411:23;:::i;:::-;17385:50;;;;;;;;;;;;;;;:::i;:::-;;;;17206:95;17277:23;17284:15;17277:23;:::i;:::-;17246:55;;;;;;;;;;;;;;;:::i;:::-;;;;16913:1038;;;;;;;;;;;:::i;:::-;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;37253:160::-;;37371:35;37253:160;37327:25;;:::i;:::-;37382:7;;37371:35;;;;:::i;:::-;37364:42;:::o;45862:136::-;45958:31;:24;:33;45862:136;45932:7;;:::i;:::-;45958:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;45951:40;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;39020:359::-;;39098:16;;:::i;:::-;39142;:36;:34;:27;:16;39159:9;39142:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;39228:5;39214:20;39228:5;39214:20;:::i;:::-;39261:1;39249:13;39261:1;39249:13;:::i;:::-;39275:3;39264:1;:9;;39268:5;39264:9;:::i;:::-;;;:::i;:::-;;;;;39275:3;39306:16;39294:45;39306:33;:30;:27;:16;39323:9;39306:27;;:::i;:::-;:30;:::i;:::-;39337:1;39306:33;;:::i;:::-;39294:45;:6;39301:1;;39294:45;;;:::i;:::-;;:::i;:::-;39275:3;:::i;:::-;39249:13;;39264:9;;;;;39359:13;:::o;6415:40670::-;;;:::o;37969:261::-;;38055:4;;:::i;:::-;38078:14;:42;;:35;:25;:14;38093:9;38078:25;;:::i;:::-;38104:8;38078:35;;:::i;:::-;:42;;:::i;:::-;:64;;38124:18;38078:64;:::i;:::-;;;:::i;:::-;;:145;;;;;37969:261;38071:152;;;:::o;38078:145::-;38158:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;38204:19;38158:65;:::i;:::-;;;:::i;:::-;;38078:145;;;;42076:200;42210:59;42076:200;42157:26;;:::i;:::-;42241:9;42252:1;42255:13;42210:59;42255:13;;:::i;:::-;42210:59;;:::i;:::-;;;:::i;:::-;42195:74;42076:200;:::o;7140:167::-;;;;;7204:53;7205:52;:40;:31;18301:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;18087:320;;18392:7;18087:320;;;;18368:10;18380;18392:7;;;;:::i;:::-;18087:320::o;:::-;;;;;;;;:::i;:::-;:::o;34414:178::-;;34535:40;:31;:50;34414:178;34512:4;;:::i;:::-;34535:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;34528:57;:::o;6415:40670::-;;;:::o;38286:173::-;38410:35;:42;38286:173;38410:25;:42;38286:173;38381:10;;:::i;:::-;38410:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;38403:49;:::o;6415:40670::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;22244:2844::-;;;;;22431:10;:27;;22445:13;22453:4;22445:13;:::i;:::-;22431:27;:::i;:::-;;;:::i;:::-;;22427:54;;22492:66;22533:25;:14;22548:9;22533:25;;:::i;:::-;22492:66;:::i;:::-;22665:8;22651:23;22665:8;22651:23;:::i;:::-;22701:1;22689:13;22701:1;22689:13;:::i;:::-;22718:3;22704:1;:12;;22708:8;22704:12;:::i;:::-;;;:::i;:::-;;;;;22718:3;22769:5;22737:47;22763:20;22769:13;:8;:5;22775:1;22769:8;;:::i;:::-;;:13;;22763:20;:::i;:::-;22753:31;;;;:::i;:::-;;;:::i;:::-;;22737:47;:10;22748:1;;22737:47;;;:::i;:::-;;:::i;:::-;22718:3;:::i;:::-;22689:13;;22704:12;;;;;;;22827:18;:11;:18;:::i;:::-;:22;;22848:1;22827:22;:::i;:::-;;;:::i;:::-;;22928:26;;;:::i;:::-;22968:14;;22964:237;;22684:111;23281:13;23293:1;23281:13;:::i;:::-;23310:3;23296:1;:12;;23300:8;23296:12;:::i;:::-;;;:::i;:::-;;;;;23342:4;23385:5;23463:14;23459:737;;23310:3;24258:5;;;;;23310:3;24258:5;24254:198;;23310:3;;;;;:::i;:::-;23281:13;;24254:198;24334:5;24317:13;:8;24283:33;:48;24334:5;24283:23;24334:14;;:8;24283:65;24334:5;24340:1;24334:8;;:::i;:::-;;:14;;:::i;:::-;24283:12;;:23;:::i;:::-;:33;:::i;:::-;24317:5;24323:1;24317:8;;:::i;:::-;;:13;;24283:48;;:::i;:::-;:65;:::i;:::-;24386:9;;24397:8;24407:5;24422:14;;:8;24407:13;:8;:5;24413:1;24407:8;;:::i;:::-;;:13;;24422:5;24428:1;24422:8;;:::i;:::-;;:14;;:::i;:::-;24371:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;24254:198;;;;;23459:737;23514:1;;;;;;23502:13;23514:1;23502:13;:::i;:::-;23541:3;23517:1;:22;;23521:18;:11;:18;:::i;:::-;23517:22;:::i;:::-;;;:::i;:::-;;;;;23572:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;23589:12;;:9;23599:1;23589:12;;:::i;:::-;;:::i;:::-;23572:29;:::i;:::-;;;:::i;:::-;;23568:433;;23541:3;;;:::i;:::-;23502:13;;23568:433;23649:4;;;;;;;23310:3;23649:4;;;;;;23683:5;;:14;;:8;:5;23689:1;23683:8;;:::i;:::-;;:14;;:::i;:::-;:40;;23700:23;;:14;:11;23712:1;23700:14;;:::i;:::-;;:23;;:::i;:::-;23683:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;23568:433;23679:269;;;;;;23568:433;24108:18;23973:5;23497:522;24108:18;;:::i;:::-;24104:78;;23497:522;23459:737;;;;;;;24104:78;24158:5;;24104:78;;23679:269;23820:9;;;23831:8;23841:13;:8;:5;23847:1;23841:8;;:::i;:::-;;:13;;23804:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;24108:18;23916:5;23679:269;;;;;23683:84;23727:40;:5;;;23744:14;23727:40;:5;:14;;:8;23744:23;23727:5;23744:23;23727:5;:8;:::i;:::-;;:14;;:::i;:::-;23744:11;:14;:::i;:::-;;:23;;:::i;:::-;23727:40;:::i;:::-;;;:::i;:::-;;23683:84;;;;;;23517:22;;;;;;;23310:3;23517:22;;;24108:18;23517:22;;;;23296:12;;;;;;;;;;24523:13;24535:1;24523:13;:::i;:::-;24518:564;24562:3;24538:1;:22;;24542:18;:11;:18;:::i;:::-;24538:22;:::i;:::-;;;:::i;:::-;;;;;24585:24;24586:23;;:14;:11;24598:1;24586:14;;:::i;:::-;;:23;;:::i;:::-;24585:24;;:::i;:::-;24581:38;;24652:37;24662:26;24668:19;:14;:11;24680:1;24668:14;;:::i;:::-;;:19;24662:26;:::i;:::-;24652:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;24716:5;;24752:1;24740:13;24752:1;24740:13;:::i;:::-;24778:3;24755:1;:21;;24759:17;:10;:17;:::i;:::-;24755:21;:::i;:::-;;;:::i;:::-;;;;;24805:13;;:10;24816:1;24805:13;;:::i;:::-;;:::i;:::-;:24;;24822:7;24805:24;:::i;:::-;;;:::i;:::-;;24801:110;;24778:3;;;:::i;:::-;24740:13;;24801:110;24861:4;;;;;24562:3;24861:4;;24942:6;24861:4;24735:190;24942:6;;:::i;:::-;24938:134;;24735:190;24523:13;24562:3;:::i;:::-;24523:13;;;;24938:134;24989:9;25000:8;25010:19;:14;:11;25022:1;25010:14;;:::i;:::-;;:19;24973:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;24938:134;;24755:21;;;;;24562:3;24755:21;;24942:6;24755:21;;;24581:38;24611:8;;24562:3;24611:8;;;24538:22;;;;;;22244:2844::o;22964:237::-;23024:11;;;;23010:33;23024:18;:11;;;;;;:18;:::i;:::-;23010:33;:::i;:::-;23074:1;23062:13;23074:1;23062:13;:::i;:::-;23101:3;23077:1;:22;;23081:18;:11;:18;:::i;:::-;23077:22;:::i;:::-;;;:::i;:::-;;;;;23101:3;23155:11;23124:52;23139:37;23149:26;23155:19;:14;:11;23167:1;23155:14;;:::i;:::-;;:19;23149:26;:::i;:::-;23139:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;23124:52;:9;23134:1;;23124:52;;;:::i;:::-;;:::i;:::-;23101:3;:::i;:::-;23062:13;;23077:22;;;;;;;;;;22964:237;;22427:54;22467:14;;;;;;;;;;;;:::i;:::-;;;;1500:62:1;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:40670:58:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38748:211::-;38910:42;38748:211;38917:25;:35;38748:211;38874:20;;:::i;:::-;38917:14;;:25;:::i;:::-;:35;:::i;:::-;38910:42;:::i;:::-;;:::o;6415:40670::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;46919:164::-;47037:39;46919:164;47037:29;:39;46919:164;47012:6;;:::i;:::-;47037:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;47030:46;:::o;2244:229:2:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;39427:142:58;39526:34;:27;:36;39427:142;39500:7;;:::i;:::-;39526:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;39519:43;:::o;6415:40670::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;42639:780::-;;;;;42803:26;;:::i;:::-;42831:13;;;:::i;:::-;42903:9;42892:21;42903:9;42892:21;:::i;:::-;42931:13;:33;:31;:24;:13;42945:9;42931:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;42979:6;:16;;:6;:16;;:::i;:::-;:21;;42999:1;42979:21;:::i;:::-;;;:::i;:::-;;:35;;;;42639:780;42979:54;;;;42639:780;42975:117;;43122:52;43130:6;43149:25;43157:16;;43122:24;43130:15;;43351:61;43130:6;;;:15;;:::i;:::-;43122:24;:::i;:::-;43157:6;:16;;:::i;:::-;43149:25;:::i;:::-;43122:52;;:::i;:::-;43204:5;;:21;;43212:13;;:::i;:::-;43204:21;:::i;:::-;;;:::i;:::-;;:45;;;;43228:13;;;:::i;:::-;43204:45;43273:18;:6;43282:9;43273:18;;:::i;:::-;:26;;43294:5;43273:26;:::i;:::-;;;:::i;:::-;;:55;;;;43302:5;;43273:55;43378:9;43389:6;43397:3;43402:9;43351:61;;:::i;:::-;42639:780;:::o;43273:55::-;43310:18;:6;;:18;:::i;:::-;43273:55;;43204:45;;;42975:117;43071:1;;;;;43057:16;;43071:1;43057:16;:::i;:::-;;:::i;:::-;43049:32;;:::o;42979:54::-;43018:6;;:15;;43028:5;43018:15;:::i;:::-;;;:::i;:::-;;;42979:54;;:35;43004:5;;:10;;43013:1;43004:10;:::i;:::-;;;:::i;:::-;;42979:35;;1500:62:1;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;36649:182:58:-;36801:23;36649:182;36801:23;;:::i;:::-;36649:182::o;:::-;;;;:::i;:::-;:::o;6415:40670::-;;;:::o;1638:85:1:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:40670:58:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;28241:224;;;;;28343:13;28355:1;28343:13;:::i;:::-;28380:3;28358:1;:20;;28362:16;:9;;:16;;:::i;:::-;28358:20;:::i;:::-;;;:::i;:::-;;;;;28399:24;:4;:24;:::i;:::-;;;28424:9;28435:12;;:9;;28445:1;28435:12;;:::i;:::-;;:::i;:::-;28399:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;28380:3;28399:49;;;28380:3;;;:::i;:::-;28343:13;;28399:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;28358:20::-;;;;;;28241:224::o;6415:40670::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;46080:759::-;46199:10;:28;;46213:14;;;:::i;:::-;46199:28;:::i;:::-;;;:::i;:::-;;46195:60;;46452:44;46453:43;:33;:24;:13;46467:9;46453:24;;:::i;:::-;:33;:::i;:::-;46487:8;46453:43;;:::i;:::-;46452:44;;:::i;:::-;46448:74;;46608:33;46533:65;46563:35;:25;:14;46578:9;46563:25;;:::i;:::-;46589:8;46563:35;;:::i;:::-;46533:65;:::i;:::-;46608:12;46623:18;46608:5;:12;:33;:::i;:::-;46651:44;:34;:27;:16;46668:9;46651:27;;:::i;:::-;:34;:::i;:::-;46686:8;46651:44;;:::i;:::-;;46705:65;46747:23;46754:15;46747:23;:::i;:::-;46705:39;:29;:18;46724:9;46705:29;;:::i;:::-;46735:8;46705:39;;:::i;:::-;:65;:::i;:::-;46815:8;46825:6;;46786:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;46080:759::o;46448:74::-;46505:17;;;;;;;;;;;;:::i;:::-;;;;46195:60;46236:19;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;35193:683::-;;;;;;35411:10;:38;;35425:24;;:13;35439:9;35425:24;;:::i;:::-;;:::i;:::-;35411:38;:::i;:::-;;;:::i;:::-;;35407:68;;35489:18;:11;35495:4;;35489:11;;:::i;:::-;:18;;:::i;:::-;:43;;35510:22;;:::i;:::-;35489:43;:::i;:::-;;;:::i;:::-;;35485:69;;35568:8;:19;;35579:8;35568:19;:::i;:::-;;;:::i;:::-;;35564:47;;35625:32;:25;:14;35640:9;35625:25;;:::i;:::-;:32;:::i;:::-;:58;;35661:22;;:::i;:::-;35625:58;:::i;:::-;;;:::i;:::-;;;35621:91;;35723:146;:14;35767:92;;35723:14;35767:92;;35723:30;:25;35767:92;35723:14;;:25;:::i;:::-;:30;:::i;:::-;35792:4;;35808:8;35828;35848;35767:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;35723:146;:::i;:::-;35193:683::o;35621:91::-;35692:20;36212;;;35692;;;;;;;;:::i;:::-;;;;35564:47;35596:15;36507;;;35596;;;;;;;;:::i;:::-;;;;35485:69;35541:13;36418;;;35541;;;;;;;;:::i;:::-;;;;35407:68;35458:17;36129;;;35458;;;;;;;;:::i;:::-;;;;7140:167;7204:53;7205:52;:40;:31;30050:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29973:868::-;30071:67;30101:37;:25;:14;30116:9;30101:25;;:::i;:::-;30127:10;30101:37;;:::i;:::-;30071:67;:::i;:::-;30172:5;:12;;:5;:12;;:::i;:::-;30198:9;;:31;;30211:18;30198:31;:::i;:::-;;;:::i;:::-;;30194:86;;30376:9;:31;;30389:18;30376:31;:::i;:::-;;;:::i;:::-;;:67;;;;29973:868;30372:104;;30620:21;30591:19;30576:34;30591:19;30576:12;:5;:12;:34;:::i;:::-;30620:17;:21;30640:1;30620:21;:::i;:::-;:5;:17;:21;:::i;:::-;30651:43;:31;:27;:16;30668:9;30651:27;;:::i;:::-;:31;:::i;:::-;30683:10;30651:43;;:::i;:::-;;30729:9;30740:10;30710:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30791:10;;30803:9;30814:19;;30766:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29973:868::o;30372:104::-;30459:7;;;:::o;30376:67::-;30411:9;;:32;;30424:19;30411:32;:::i;:::-;;;:::i;:::-;;30376:67;;30194:86;30252:17;;;;;;;;;;;;:::i;:::-;;;;29973:868;;;;:::i;:::-;:::o;6415:40670::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;31550:579::-;31653:10;:24;;31667:10;31653:24;:::i;:::-;;;:::i;:::-;;;:66;;;31550:579;31649:94;;31758:8;:13;;31769:2;31758:13;:::i;:::-;;;:::i;:::-;;31754:44;;31832:9;:13;;31844:1;31832:13;:::i;:::-;;;:::i;:::-;;31828:44;;31883:169;31953:8;31913:139;31974:9;31913:139;32000:41;;:27;:16;32017:9;32000:27;;:::i;:::-;:41;;:::i;:::-;31913:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;31883:27;:16;31900:9;31883:27;;:::i;:::-;:169;:::i;:::-;32102:8;32112:9;32068:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;31550:579::o;31828:44::-;31854:18;;;;;;;;;;;;:::i;:::-;;;;31754:44;31780:18;;;;;;;;;;;;:::i;:::-;;;;31649:94;31728:15;;;;;;;;;;;;:::i;:::-;;;;31653:66;31681:10;;:38;;31695:24;;:13;31709:9;31695:24;;:::i;:::-;;:::i;:::-;31681:38;:::i;:::-;;;:::i;:::-;;;31653:66;;6415:40670;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;26840:1348::-;26924:65;26954:35;:25;:14;26969:9;26954:25;;:::i;:::-;26980:8;26954:35;;:::i;:::-;26924:65;:::i;:::-;27042:9;27031:21;27042:9;27031:21;:::i;:::-;27152:12;;:5;:12;;:::i;:::-;:34;;27168:18;27152:34;:::i;:::-;;;:::i;:::-;;27148:47;;27209:19;;:5;:19;;:::i;:::-;:24;;27232:1;27209:24;:::i;:::-;;;:::i;:::-;;27205:92;;27399:25;27325:37;:15;27343:19;;:5;:19;;:::i;:::-;27325:37;;:::i;:::-;27399:25;27409:15;;:6;:15;;:::i;:::-;27399:25;:::i;:::-;;;:::i;:::-;27525:16;:34;;27544:15;27525:34;:::i;:::-;;;:::i;:::-;;:78;;;;27562:15;;27525:78;27618:11;;:31;;27632:17;;:5;:17;;:::i;:::-;27618:31;:::i;:::-;;;:::i;:::-;;27614:568;;27525:78;26840:1348;;;;;:::o;27614:568::-;27665:31;27685:11;27665:17;:5;:17;:31;:::i;:::-;27710:26;;27735:1;27710:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;27755:31;;27770:16;;27755:11;27770:6;:16;;:::i;:::-;27755:31;:::i;:::-;;;:::i;:::-;;;:69;;;27614:568;27751:421;;27614:568;;;;27751:421;27897:33;27867:12;;:5;:12;;:::i;:::-;27912:18;27897:12;27912:18;27897:5;:12;:33;:::i;:::-;27948:44;:34;:27;:16;27965:9;27948:27;;:::i;:::-;:34;:::i;:::-;27983:8;27948:44;;:::i;:::-;;28036:9;28047:8;;28057:11;28016:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;28117:8;28127:9;28138:18;;28092:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27751:421;;;;;;27755:69;27790:5;:12;;:5;:12;;:::i;:::-;:34;;27806:18;27790:34;:::i;:::-;;;:::i;:::-;;;27755:69;;27525:78;27580:23;27586:16;27580:23;:::i;:::-;27525:78;;27205:92;27249:7;;;;:::o;27148:47::-;27188:7;;;;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;40153:156::-;40277:25;40270:32;40153:156;40233:25;;:::i;:::-;40277:14;;:25;:::i;:::-;40270:32;:::i;:::-;;:::o;7140:167::-;7204:53;7205:52;:40;:31;29356:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;29278:497;29377:67;29407:37;:25;:14;29422:9;29407:25;;:::i;:::-;29433:10;29407:37;;:::i;:::-;29377:67;:::i;:::-;29478:5;:12;;:5;:12;;:::i;:::-;29504:9;;:31;;29517:18;29504:31;:::i;:::-;;;:::i;:::-;;29500:86;;29596:33;29611:18;29596:12;29611:18;29596:5;:12;:33;:::i;:::-;29639:46;:34;:27;:16;29656:9;29639:27;;:::i;:::-;:34;:::i;:::-;29674:10;29639:46;;:::i;:::-;;29726:10;;29738:9;29749:18;;29701:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29278:497::o;29500:86::-;29558:17;30252;;;29558;;;;;;;;:::i;:::-;;;;29278:497;;;;:::i;:::-;:::o;6415:40670::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;39830:264::-;;40042:33;:45;39830:264;;40042:23;:45;39830:264;40012:7;;:::i;:::-;40042:12;;:23;:::i;:::-;:33;:::i;:::-;40076:10;;40042:45;;:::i;:::-;;:::i;:::-;40035:52;:::o;1232:99:2:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:40670:58:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;44911:874::-;;45002:10;:38;;45016:24;;:13;45030:9;45016:24;;:::i;:::-;;:::i;:::-;45002:38;:::i;:::-;;;:::i;:::-;;;:63;;;44911:874;44998:91;;45100:64;45129:35;:25;:14;45144:9;45129:25;;:::i;:::-;45155:8;45129:35;;:::i;:::-;45100:64;:::i;:::-;45274:12;;:5;:12;;:::i;:::-;:34;;45290:18;45274:34;:::i;:::-;;;:::i;:::-;;45270:403;;44911:874;45683:13;45734:34;:27;:44;45683:13;:41;:31;:24;:13;45697:9;45683:24;;:::i;:::-;:31;:::i;:::-;45715:8;45683:41;;:::i;:::-;;45734:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;44911:874::o;45270:403::-;45498:92;45367:9;45423:57;:52;45356:21;45367:9;45356:21;:::i;:::-;45450:25;45458:16;;45423:24;45431:15;;:6;:15;;:::i;:::-;45423:24;:::i;:::-;45458:6;:16;;:::i;:::-;45450:25;:::i;:::-;45423:52;;:::i;:::-;:57;45478:2;45423:57;:::i;:::-;;;:::i;:::-;45500:19;;:5;:19;;:::i;:::-;:23;;45522:1;45500:23;:::i;:::-;;;:::i;:::-;;:89;;;;45270:403;45499:91;;45498:92;;:::i;:::-;45494:169;;45270:403;;;45494:169;45617:31;;;;;;;;;;;;:::i;:::-;;;;45500:89;45527:62;:15;;;:37;:62;:15;45545:19;;45527:15;45545:5;:19;;:::i;:::-;45527:37;;:::i;:::-;45568:21;45527:62;:::i;:::-;;;:::i;:::-;;;45500:89;;;;44998:91;45074:15;31728;;;45074;;;;;;;;:::i;:::-;;;;45002:63;45044:10;;:21;;45058:7;;:::i;:::-;45044:21;:::i;:::-;;;:::i;:::-;;;45002:63;;40382:374;;40586:35;40557:64;40382:374;40478:4;;:::i;:::-;40537:9;40586:25;40526:21;40537:9;40526:21;:::i;:::-;40586:14;;:25;:::i;:::-;:35;:::i;:::-;40557:64;:::i;:::-;40636:19;;:5;:19;;:::i;:::-;:24;;40659:1;40636:24;:::i;:::-;;;:::i;:::-;;40632:42;;40692:57;40734:15;;40693:37;40692:57;40693:15;40711:19;40693:15;;40711:5;:19;;:::i;:::-;40693:37;;:::i;:::-;40734:6;:15;;:::i;:::-;40692:57;:::i;:::-;;;:::i;:::-;;40685:64;:::o;40632:42::-;40669:5;;;40662:12;:::o;1500:62:1:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:2:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;34650:225:58:-;34743:10;:38;;34757:24;;:13;34771:9;34757:24;;:::i;:::-;;:::i;:::-;34743:38;:::i;:::-;;;:::i;:::-;;34739:68;;34817:41;:27;:51;34861:7;34817:16;;:27;:::i;:::-;:41;:51;:::i;:::-;34650:225::o;34739:68::-;34790:17;36129;;;34790;;;;;;;;:::i;:::-;;;;33994:349;34090:10;:24;;34104:10;34090:24;:::i;:::-;;;:::i;:::-;;34086:53;;34153:49;34154:48;:38;:31;:20;34175:9;34154:31;;:::i;:::-;:38;:::i;:::-;34193:8;34154:48;;:::i;:::-;34153:49;;:::i;:::-;34149:77;;34236:44;:34;:27;:16;34253:9;34236:27;;:::i;:::-;:34;:::i;:::-;34271:8;34236:44;;:::i;:::-;;34327:8;34295:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;33994:349::o;34149:77::-;34211:15;;;;;;;;;;;;:::i;:::-;;;;34086:53;34123:16;32348;;;34123;;;;;;;;:::i;:::-;;;;6415:40670;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;40803:443::-;40930:27;40898:59;40803:443;40864:22;;:::i;:::-;40930:16;;:27;:::i;:::-;40898:59;:::i;:::-;41016:15;;:6;:15;;:::i;:::-;:20;;41035:1;41016:20;:::i;:::-;;;:::i;:::-;;41012:95;;40803:443;41120:16;;:6;:16;;:::i;:::-;:21;;41140:1;41120:21;:::i;:::-;;;:::i;:::-;;41116:100;;40803:443;41226:13;:::o;41116:100::-;41157:48;41176:29;;:::i;:::-;41157:16;:6;:16;:48;:::i;:::-;41116:100;;41012:95;41052:44;41070:26;;:::i;:::-;41052:15;:6;:15;:44;:::i;:::-;41012:95;;6415:40670;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:21:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:1:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:2;;;;;;1901:40:1;;;;;;:::i;:::-;;;;8844:165:21;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:17:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:40670:58:-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;18460:2216::-;;;;;;18662:65;18692:35;:25;:14;18707:9;18692:25;;:::i;:::-;18718:8;18692:35;;:::i;:::-;18662:65;:::i;:::-;18780:9;18769:21;18780:9;18769:21;:::i;:::-;18863:5;:12;;:5;:12;;:::i;:::-;:34;;18879:18;18863:34;:::i;:::-;;;:::i;:::-;;18859:64;;18985:38;:28;:24;:13;18999:9;18985:24;;:::i;:::-;:28;:::i;:::-;19014:8;18985:38;;:::i;:::-;;20075:20;;19081:12;;:5;:12;;:::i;:::-;19125:15;19103:37;19125:15;19103:19;:5;:19;:37;:::i;:::-;19150:42;19174:18;19184:7;;19174:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;19150:21;:5;:21;:42;:::i;:::-;19202:21;;19222:1;19202:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;19233:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;19323:20;;:::i;:::-;19357:10;;:15;;19371:1;19357:15;:::i;:::-;;;:::i;:::-;;19353:393;;;;19756:24;19400:18;19353:393;;19756:12;19771:9;19756:5;:12;:24;:::i;:::-;19824:9;:31;;19837:18;19824:31;:::i;:::-;;;:::i;:::-;;:66;;;19353:393;19820:196;;19353:393;20075:20;;:::i;:::-;:42;;;19353:393;20071:118;;19353:393;20222:9;;;20233:11;20246:8;20256:10;20268:15;;20204:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;20299:9;:22;;20312:9;20299:22;:::i;:::-;;;:::i;:::-;;20295:114;;19353:393;20486:15;;;;;:::i;:::-;:29;;20505:10;20513:1;20505:10;:::i;:::-;20486:29;:::i;:::-;;;:::i;:::-;;20482:188;;19353:393;18460:2216;;:::o;20482:188::-;20535:49;:33;20552:15;;;:::i;:::-;20535:33;:::i;:::-;:49;:::i;:::-;;;20585:8;20595:9;20613:15;20606:23;20613:15;20606:23;:::i;:::-;20535:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;20482:188;20531:129;;;;;;;;;;;20482:188;;;;20531:129;;;;;;20535:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;20295:114::-;20356:9;20367:8;20377:9;20388;20342:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;20295:114;;;;20071:118;20170:7;20149:9;;20160:8;;20170:7;;;;:::i;:::-;20071:118;;;;20075:42;20099:7;:14;:7;;:14;;:::i;:::-;:18;;20116:1;20099:18;:::i;:::-;;;:::i;:::-;;20075:42;;19820:196;19906:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;19938:8;19906:41;;:::i;:::-;;19985:9;19996:8;19966:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;19820:196;;19824:66;19859:9;;:31;;19872:18;19859:31;:::i;:::-;;;:::i;:::-;;;19824:66;;19353:393;19439:10;:16;;19452:3;19439:16;:::i;:::-;;;:::i;:::-;;19435:311;;;;19756:24;19483:19;19435:311;;19353:393;;19435:311;19756:24;19624:19;19681:9;19727:7;19681:9;19692:11;;19705:8;19715:10;19727:7;;;;;;:::i;:::-;19435:311;;18859:64;18906:17;30252;;;18906;;;;;;;;:::i;:::-;;;;9090:115:21;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:40670:58:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:21:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:40670:58:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:2:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:13:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:40670:58:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;43425:705::-;;;;;43612:26;;:::i;:::-;43692:3;43678:27;43692:12;:3;43698:6;43692:12;;:::i;:::-;43678:27;:::i;:::-;43731:1;43715:17;43731:1;43715:17;:::i;:::-;43760:6;43777:3;43768:1;:7;;43772:3;43768:7;:::i;:::-;;;:::i;:::-;;;;;43809:30;:27;:24;:13;43823:9;43809:24;;:::i;:::-;:27;:::i;:::-;43837:1;43809:30;;:::i;:::-;43857:46;43878:9;43889:2;43893:9;43857:46;;:::i;:::-;43853:126;;43777:3;;;;;:::i;:::-;43748:18;;43853:126;43777:3;43937:2;;43923:16;43957:7;43937:2;43923:16;:4;43928:5;;43923:16;;;:::i;:::-;;:::i;:::-;43957:7;:::i;:::-;43853:126;;;;43768:7;;;;;;;44011:20;44025:5;44011:20;:::i;:::-;44058:1;44046:13;44058:1;44046:13;:::i;:::-;44072:3;44061:1;:9;;44065:5;44061:9;:::i;:::-;;;:::i;:::-;;;;;44072:3;44106:4;44091:22;44106:7;;:4;44111:1;44106:7;;:::i;:::-;;:::i;:::-;44091:22;:9;44101:1;;44091:22;;;:::i;:::-;;:::i;:::-;44072:3;:::i;:::-;44046:13;;44061:9;;;;;43425:705::o;8607:156:21:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:40670:58:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:21:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:40670:58:-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:17:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:40670:58:-;;-1:-1:-1;6415:40670:58;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:17:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:40670:58;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;25162:1016::-;;;;;;25598:17;;25612:3;25598:17;:::i;:::-;;;:::i;:::-;;;25594:513;;25162:1016;;;:::o;25594:513::-;25652:23;25659:15;25652:23;:::i;:::-;25708:39;;:29;:18;25727:9;25708:29;;:::i;:::-;25738:8;25708:39;;:::i;:::-;;:::i;:::-;25765:9;:14;;25778:1;25765:14;:::i;:::-;;;:::i;:::-;;:65;;;;;25594:513;25761:336;;;25594:513;;;;25761:336;25850:53;25892:11;25850:39;:29;:18;25869:9;25850:29;;:::i;:::-;25880:8;25850:39;;:::i;:::-;:53;:::i;:::-;25955:8;25926:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;25761:336;;;;;25765:65;25783:23;:11;;;:23;:::i;:::-;:47;;25810:20;;:::i;:::-;25783:47;:::i;:::-;;;:::i;:::-;;;25765:65;;;6415:40670;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;20814:46::-;20858:2;;;:::i;:::-;20814:46;:::o;20858:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;20867:1122::-;;20975:14;:7;;:14;;:::i;:::-;:19;;20993:1;20975:19;:::i;:::-;;;:::i;:::-;;20971:32;;21080:14;:7;;:14;;:::i;:::-;:23;;21097:6;21080:23;:::i;:::-;;;:::i;:::-;;21076:36;;21253:31;21122:25;;:::i;:::-;21253:4;:22;:4;:22;:::i;:::-;:31;:22;21276:7;;21253:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;20867:1122;21249:152;;;;;;;;;;;21485:12;:5;:12;:::i;:::-;:31;;21500:16;;:::i;:::-;21485:31;:::i;:::-;;;:::i;:::-;;:65;;;;21519:16;;:::i;:::-;21485:65;21722:28;:4;:28;:::i;:::-;;;21751:9;21762:8;21772:5;21779:8;21722:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;21485:65;21718:265;;;;;;;;;;;20867:1122::o;21718:265::-;;;;;;21722:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;21485:65::-;21538:12;:5;:12;:::i;:::-;21485:65;;21249:152;21384:7;;;:::o;21249:152::-;;;;;;;21253:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;21076:36;21105:7;;;;:::o;20971:32::-;20996:7;;;;:::o;4474:107:21:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:40670:58:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:21:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:1:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;44136:511:58:-;44244:4;;:::i;:::-;44343:20;44342:51;44343:50;:40;:31;:20;44364:9;44343:31;;:::i;:::-;:40;:::i;:::-;44384:8;44343:50;;:::i;:::-;44342:51;;:::i;:::-;44338:69;;44418:64;44447:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;44418:64;:::i;:::-;44496:19;;:5;:19;;:::i;:::-;:24;;44519:1;44496:24;:::i;:::-;;;:::i;:::-;;:62;;;;44136:511;44492:80;;44590:50;:37;:50;:15;44608:19;;44590:15;44608:5;:19;;:::i;:::-;44590:37;;:::i;:::-;44631:9;44590:50;:::i;:::-;;;:::i;:::-;;;44583:57;:::o;44492:80::-;44567:5;;;44560:12;:::o;44496:62::-;44524:5;:12;;:5;:12;;:::i;:::-;:34;;44540:18;44524:34;:::i;:::-;;;:::i;:::-;;44496:62;;44338:69;44402:5;;;;44395:12;:::o;6415:40670::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:21:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:40670:58:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:17:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6415:40670:58;6283:66:17;;;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"23176":[{"start":3791,"length":32},{"start":13651,"length":32}],"23378":[{"start":5198,"length":32},{"start":9621,"length":32},{"start":12527,"length":32},{"start":20736,"length":32},{"start":23517,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InternalOnly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IntervalTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMaxMissed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NameTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotServiceOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashingOracle\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTangleCore\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorNotEligibleForRemoval\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorSlashed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorUnknown\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyDefinitions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyRegistered()\":[{\"notice\":\"Entity is already registered.\"}],\"InternalOnly()\":[{\"notice\":\"Function is restricted to internal (self) calls.\"}],\"IntervalTooShort()\":[{\"notice\":\"Heartbeat interval below the enforced minimum.\"}],\"InvalidBounds()\":[{\"notice\":\"minValue/maxValue bounds are inconsistent.\"}],\"InvalidMaxMissed()\":[{\"notice\":\"maxMissed must be at least 1.\"}],\"InvalidSignature()\":[{\"notice\":\"Recovered heartbeat signer does not match the caller.\"}],\"NameTooLong()\":[{\"notice\":\"Metric name exceeds the maximum allowed length.\"}],\"NotAuthorized()\":[{\"notice\":\"Caller is neither Tangle core nor the service owner.\"}],\"NotRegistered()\":[{\"notice\":\"Entity is not registered.\"}],\"NotRegisteredOperator()\":[{\"notice\":\"Caller is not a registered operator for the service.\"}],\"NotServiceOwner()\":[{\"notice\":\"Caller is not the service owner.\"}],\"NotSlashingOracle()\":[{\"notice\":\"Caller is not the configured slashing oracle.\"}],\"OnlyTangleCore()\":[{\"notice\":\"Caller is not the Tangle core contract.\"}],\"OperatorNotEligibleForRemoval()\":[{\"notice\":\"Operator does not meet removal eligibility criteria.\"}],\"OperatorSlashed()\":[{\"notice\":\"Operation not allowed while the operator is slashed.\"}],\"OperatorUnknown()\":[{\"notice\":\"Operator is not tracked for the service.\"}],\"TooManyDefinitions()\":[{\"notice\":\"Number of metric definitions exceeds the cap.\"}],\"ZeroAddress()\":[{\"notice\":\"Zero address supplied where a non-zero address is required.\"}]},\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0xac12dc963aa026a1836f86d43ae8312690c0879bfac3f1380d3254f78609c878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://245db676b001b01a04be7a0dd62a32e024230595b2be47dc6be1bc99c1a13ac7\",\"dweb:/ipfs/Qmah17E7VaBAG5xtVN2Xee3Pw6B8wr1xFeCBD6H3LAHb83\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyRegistered"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[],"type":"error","name":"InternalOnly"},{"inputs":[],"type":"error","name":"IntervalTooShort"},{"inputs":[],"type":"error","name":"InvalidBounds"},{"inputs":[],"type":"error","name":"InvalidMaxMissed"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"NameTooLong"},{"inputs":[],"type":"error","name":"NotAuthorized"},{"inputs":[],"type":"error","name":"NotRegistered"},{"inputs":[],"type":"error","name":"NotRegisteredOperator"},{"inputs":[],"type":"error","name":"NotServiceOwner"},{"inputs":[],"type":"error","name":"NotSlashingOracle"},{"inputs":[],"type":"error","name":"OnlyTangleCore"},{"inputs":[],"type":"error","name":"OperatorNotEligibleForRemoval"},{"inputs":[],"type":"error","name":"OperatorSlashed"},{"inputs":[],"type":"error","name":"OperatorUnknown"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"TooManyDefinitions"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0xac12dc963aa026a1836f86d43ae8312690c0879bfac3f1380d3254f78609c878","urls":["bzz-raw://245db676b001b01a04be7a0dd62a32e024230595b2be47dc6be1bc99c1a13ac7","dweb:/ipfs/Qmah17E7VaBAG5xtVN2Xee3Pw6B8wr1xFeCBD6H3LAHb83"],"license":"MIT"}},"version":1},"id":58} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"AlreadyRegistered","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"InternalOnly","inputs":[]},{"type":"error","name":"IntervalTooShort","inputs":[]},{"type":"error","name":"InvalidBounds","inputs":[]},{"type":"error","name":"InvalidMaxMissed","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"NameTooLong","inputs":[]},{"type":"error","name":"NotAuthorized","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[]},{"type":"error","name":"NotRegisteredOperator","inputs":[]},{"type":"error","name":"NotServiceOwner","inputs":[]},{"type":"error","name":"NotSlashingOracle","inputs":[]},{"type":"error","name":"OnlyTangleCore","inputs":[]},{"type":"error","name":"OperatorNotEligibleForRemoval","inputs":[]},{"type":"error","name":"OperatorSlashed","inputs":[]},{"type":"error","name":"OperatorUnknown","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TooManyDefinitions","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b61739a6104d38239608051818181610ecf0152613553015260a05181818161144e01528181612595015281816130ef015281816151000152615bdd015261739a90f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b61015761786d8038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b6124f9565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124c5565b612490565b61242d565b6123cd565b612397565b612363565b61232e565b6122f6565b612224565b6121ef565b6121ad565b612178565b61204e565b61201a565b611fad565b611f73565b611eaa565b611de7565b611c60565b611baa565b611b77565b611b40565b611aab565b611a78565b611a42565b611a0c565b611950565b61191b565b6118ad565b611672565b611628565b6115a6565b611571565b611503565b611470565b611417565b6113e2565b61137d565b611333565b6112c7565b6111f3565b6111b9565b610f83565b610f16565b610e97565b610d1e565b610cd0565b610c35565b610b8f565b610a62565b6106c0565b61066e565b61063a565b610577565b61051d565b61044e565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060401b031690565b6103c8816103b4565b036103cf57565b5f80fd5b905035906103e0826103bf565b565b60018060a01b031690565b6103f6906103e2565b90565b610402816103ed565b0361040957565b5f80fd5b9050359061041a826103f9565b565b91906040838203126104445780610438610441925f86016103d3565b9360200161040d565b90565b6103ac565b5f0190565b3461047d5761046761046136600461041c565b9061258c565b61046f6103a2565b8061047981610449565b0390f35b6103a8565b9060208282031261049b57610498915f016103d3565b90565b6103ac565b6104a9906103b4565b9052565b60ff1690565b6104bc906104ad565b9052565b151590565b6104ce906104c0565b9052565b90604080610506936104ea5f8201515f8601906104a0565b6104fc602082015160208601906104b3565b01519101906104c5565b565b919061051b905f606085019401906104d2565b565b3461054d57610549610538610533366004610482565b61269b565b6105406103a2565b91829182610508565b0390f35b6103a8565b90565b61055e90610552565b9052565b9190610575905f60208501940190610555565b565b346105a8576105a461059361058d36600461041c565b906126b4565b61059b6103a2565b91829182610562565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f15781359160018060401b0383116105ec5760200192602083028401116105e757565b6105b5565b6105b1565b6105ad565b9190916040818403126106355761060f835f83016103d3565b92602082013560018060401b0381116106305761062c92016105b9565b9091565b6103b0565b6103ac565b346106695761065361064d3660046105f6565b91612e22565b61065b6103a2565b8061066581610449565b0390f35b6103a8565b3461069d5761068761068136600461041c565b906130e6565b61068f6103a2565b8061069981610449565b0390f35b6103a8565b906020828203126106bb576106b8915f0161040d565b90565b6103ac565b346106ee576106d86106d33660046106a2565b61326b565b6106e06103a2565b806106ea81610449565b0390f35b6103a8565b6106fc81610552565b0361070357565b5f80fd5b90503590610714826106f3565b565b919060408382031261073e578061073261073b925f86016103d3565b93602001610707565b90565b6103ac565b90565b61075a61075561075f926103b4565b610743565b6103b4565b90565b9061076c90610746565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107ab8161078c565b8210156107c5576107bd600491610790565b910201905f90565b610778565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156107fe575b60208310146107f957565b6107ca565b91607f16916107ee565b60209181520190565b5f5260205f2090565b905f929180549061083461082d836107de565b8094610808565b916001811690815f1461088b575060011461084f575b505050565b61085c9192939450610811565b915f925b81841061087357505001905f808061084a565b60018160209295939554848601520191019290610860565b92949550505060ff19168252151560200201905f808061084a565b906108b09161081a565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108db906108b3565b810190811060018060401b038211176108f357604052565b6108bd565b90610918610911926109086103a2565b938480926108a6565b03836108d1565b565b5f1c90565b90565b61092e6109339161091a565b61091f565b90565b6109409054610922565b90565b60ff1690565b61095561095a9161091a565b610943565b90565b6109679054610949565b90565b610975906008610762565b9061097f8261078c565b8110156109c55761098f916107a2565b509061099c5f83016108f8565b916109a960018201610936565b916109c260036109bb60028501610936565b930161095d565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a00610a09602093610a0e936109f7816109c9565b938480936109cd565b958691016109d6565b6108b3565b0190565b610a1b906104c0565b9052565b610a59610a6094610a4f610a446060959998969960808601908682035f8801526109e1565b986020850190610555565b6040830190610555565b0190610a12565b565b34610a9757610a93610a7e610a78366004610716565b9061096a565b90610a8a9492946103a2565b94859485610a1f565b0390f35b6103a8565b610aa5816104ad565b03610aac57565b5f80fd5b90503590610abd82610a9c565b565b909182601f83011215610af75781359160018060401b038311610af2576020019260018302840111610aed57565b6105b5565b6105b1565b6105ad565b919060c083820312610b8a57610b14815f85016103d3565b92610b2282602083016103d3565b92610b308360408401610ab0565b92606083013560018060401b038111610b855781610b4f918501610abf565b929093610b5f83608083016103d3565b9260a082013560018060401b038111610b8057610b7c9201610abf565b9091565b6103b0565b6103b0565b6103ac565b34610bc757610bb1610ba2366004610afc565b9695909594919493929361364b565b610bb96103a2565b80610bc381610449565b0390f35b6103a8565b5f910312610bd657565b6103ac565b90565b610bf2610bed610bf792610bdb565b610743565b6103b4565b90565b610c0561012c610bde565b90565b610c10610bfa565b90565b610c1c906103b4565b9052565b9190610c33905f60208501940190610c13565b565b34610c6557610c45366004610bcc565b610c61610c50610c08565b610c586103a2565b91829182610c20565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c89906008610c8e9302610c6a565b610c6e565b90565b90610c9c9154610c79565b90565b610cab600b5f90610c91565b90565b610cb7906103ed565b9052565b9190610cce905f60208501940190610cae565b565b34610d0057610ce0366004610bcc565b610cfc610ceb610c9f565b610cf36103a2565b91829182610cbb565b0390f35b6103a8565b610d1061012c610bde565b90565b610d1b610d05565b90565b34610d4e57610d2e366004610bcc565b610d4a610d39610d13565b610d416103a2565b91829182610c20565b0390f35b6103a8565b90602082820312610d82575f82013560018060401b038111610d7d57610d799201610abf565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610db9610dc2602093610dc793610db0816109c9565b93848093610808565b958691016109d6565b6108b3565b0190565b610dd490610552565b9052565b90610e0290602080610df7604084015f8701518582035f870152610d9a565b940151910190610dcb565b90565b90610e0f91610dd8565b90565b60200190565b90610e2c610e2583610d87565b8092610d8b565b9081610e3d60208302840194610d94565b925f915b838310610e5057505050505090565b90919293946020610e72610e6c83856001950387528951610e05565b97610e12565b9301930191939290610e41565b610e949160208201915f818403910152610e18565b90565b34610ec857610ec4610eb3610ead366004610d53565b90613695565b610ebb6103a2565b91829182610e7f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610efd90610ef1565b9052565b9190610f14905f60208501940190610ef4565b565b34610f4657610f26366004610bcc565b610f42610f31610ecd565b610f396103a2565b91829182610f01565b0390f35b6103a8565b90565b610f62610f5d610f6792610f4b565b610743565b6103b4565b90565b610f75610e10610f4e565b90565b610f80610f6a565b90565b34610fb357610f93366004610bcc565b610faf610f9e610f78565b610fa66103a2565b91829182610c20565b0390f35b6103a8565b90610fc290610746565b5f5260205260405f2090565b610fe2610fdd610fe7926103e2565b610743565b6103e2565b90565b610ff390610fce565b90565b610fff90610fea565b90565b9061100c90610ff6565b5f5260205260405f2090565b60018060401b031690565b61102f6110349161091a565b611018565b90565b6110419054611023565b90565b60401c90565b60ff1690565b61105c61106191611044565b61104a565b90565b61106e9054611050565b90565b60481c90565b60ff1690565b61108961108e91611071565b611077565b90565b61109b905461107d565b90565b90565b6110ad6110b29161091a565b61109e565b90565b6110bf90546110a1565b90565b906110d16110d6926003610fb8565b611002565b6110e15f8201610936565b916110ee60018301611037565b916110fb60018201611064565b91611114600261110d60018501611091565b93016110b5565b90565b611120906104ad565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561114257565b611124565b9061115182611138565b565b61115c90611147565b90565b61116890611153565b9052565b909594926111b7946111a66111b09261119c60809661119260a088019c5f890190610555565b6020870190610c13565b6040850190611117565b606083019061115f565b0190610ef4565b565b346111ee576111ea6111d56111cf36600461041c565b906110c2565b916111e19593956103a2565b9586958661116c565b0390f35b6103a8565b346112235761121f61120e611209366004610482565b6136af565b6112166103a2565b91829182610562565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611244906103ed565b9052565b906112558160209361123b565b0190565b60200190565b9061127c61127661126f84611228565b809361122c565b92611235565b905f5b81811061128c5750505090565b9091926112a561129f6001928651611248565b94611259565b910191909161127f565b6112c49160208201915f81840391015261125f565b90565b346112f7576112f36112e26112dd366004610482565b613767565b6112ea6103a2565b918291826112af565b0390f35b6103a8565b90565b61131361130e611318926112fc565b610743565b610552565b90565b61132560c86112ff565b90565b61133061131b565b90565b3461136357611343366004610bcc565b61135f61134e611328565b6113566103a2565b91829182610562565b0390f35b6103a8565b919061137b905f60208501940190610a12565b565b346113ae576113aa61139961139336600461041c565b90613807565b6113a16103a2565b91829182611368565b0390f35b6103a8565b906113bd90610746565b5f5260205260405f2090565b6113df906113da6007915f926113b3565b610c91565b90565b346114125761140e6113fd6113f8366004610482565b6113c9565b6114056103a2565b91829182610cbb565b0390f35b6103a8565b346114475761144361143261142d366004610482565b61388e565b61143a6103a2565b918291826112af565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114a057611480366004610bcc565b61149c61148b61144c565b6114936103a2565b91829182610cbb565b0390f35b6103a8565b906080828203126114fe576114bc815f84016103d3565b926114ca82602085016103d3565b926114d88360408301610ab0565b92606082013560018060401b0381116114f9576114f59201610abf565b9091565b6103b0565b6103ac565b346115355761151f6115163660046114a5565b93929092613921565b6115276103a2565b8061153181610449565b0390f35b6103a8565b90565b61155161154c6115569261153a565b610743565b610552565b90565b611563603261153d565b90565b61156e611559565b90565b346115a157611581366004610bcc565b61159d61158c611566565b6115946103a2565b91829182610562565b0390f35b6103a8565b346115d7576115d36115c26115bc36600461041c565b90613930565b6115ca6103a2565b91829182611368565b0390f35b6103a8565b90565b6115f36115ee6115f8926115dc565b610743565b6104ad565b90565b61160560036115df565b90565b6116106115fb565b90565b9190611626905f60208501940190611117565b565b3461165857611638366004610bcc565b611654611643611608565b61164b6103a2565b91829182611613565b0390f35b6103a8565b9190611670905f6020850194019061115f565b565b346116a35761169f61168e61168836600461041c565b9061395c565b6116966103a2565b9182918261165d565b0390f35b6103a8565b906116bb6116b46103a2565b92836108d1565b565b60018060401b0381116116d35760208091020190565b6108bd565b5f80fd5b5f80fd5b5f80fd5b60018060401b038111611700576116fc6020916108b3565b0190565b6108bd565b90825f939282370152565b90929192611725611720826116e4565b6116a8565b938185526020850190828401116117415761173f92611705565b565b6116e0565b9080601f830112156117645781602061176193359101611710565b90565b6105ad565b9190916040818403126117ba5761178060406116a8565b925f8201359160018060401b0383116117b5576117a2826117ae948301611746565b5f860152602001610707565b6020830152565b6116dc565b6116d8565b9291906117d36117ce826116bd565b6116a8565b93818552602080860192028101918383116118285781905b8382106117f9575050505050565b813560018060401b038111611823576020916118188784938701611769565b8152019101906117eb565b6105ad565b6105b5565b9080601f8301121561184b57816020611848933591016117bf565b90565b6105ad565b6080818303126118a857611866825f83016103d3565b92611874836020840161040d565b9260408301359060018060401b0382116118a357611897816118a093860161182d565b93606001610707565b90565b6103b0565b6103ac565b346118df576118c96118c0366004611850565b92919091613cbe565b6118d16103a2565b806118db81610449565b0390f35b6103a8565b90565b6118fb6118f6611900926118e4565b610743565b610552565b90565b61190d60406118e7565b90565b611918611903565b90565b3461194b5761192b366004610bcc565b611947611936611910565b61193e6103a2565b91829182610562565b0390f35b6103a8565b3461197e57611960366004610bcc565b611968614305565b6119706103a2565b8061197a81610449565b0390f35b6103a8565b61198c90611153565b9052565b61199990610ef1565b9052565b906080806119f5936119b55f8201515f860190610dcb565b6119c7602082015160208601906104a0565b6119d9604082015160408601906104b3565b6119eb60608201516060860190611983565b0151910190611990565b565b9190611a0a905f60a0850194019061199d565b565b34611a3d57611a39611a28611a2236600461041c565b90614442565b611a306103a2565b918291826119f7565b0390f35b6103a8565b34611a7357611a6f611a5e611a5836600461041c565b9061449a565b611a666103a2565b91829182610c20565b0390f35b6103a8565b34611aa657611a88366004610bcc565b611a906144c2565b611a986103a2565b80611aa281610449565b0390f35b6103a8565b34611adb57611ad7611ac6611ac1366004610482565b614513565b611ace6103a2565b91829182610562565b0390f35b6103a8565b9091606082840312611b1557611b12611afb845f85016103d3565b93611b098160208601610707565b93604001610707565b90565b6103ac565b92916020611b36611b3e9360408701908782035f89015261125f565b940190610555565b565b34611b7257611b59611b53366004611ae0565b916145b1565b90611b6e611b656103a2565b92839283611b1a565b0390f35b6103a8565b34611ba557611b8f611b8a3660046106a2565b614738565b611b976103a2565b80611ba181610449565b0390f35b6103a8565b34611bda57611bba366004610bcc565b611bd6611bc5614747565b611bcd6103a2565b91829182610cbb565b0390f35b6103a8565b909182601f83011215611c175781359160018060401b038311611c12576020019260208302840111611c0d57565b6105b5565b6105b1565b6105ad565b919091604081840312611c5b57611c35835f83016103d3565b92602082013560018060401b038111611c5657611c529201611bdf565b9091565b6103b0565b6103ac565b34611c8f57611c79611c73366004611c1c565b916147ce565b611c816103a2565b80611c8b81610449565b0390f35b6103a8565b91606083830312611cde57611cab825f85016103d3565b92611cb9836020830161040d565b92604082013560018060401b038111611cd957611cd69201611746565b90565b6103b0565b6103ac565b90611ced90610746565b5f5260205260405f2090565b90611d0390610ff6565b5f5260205260405f2090565b905090565b611d39611d3092602092611d27816109c9565b94858093611d0f565b938491016109d6565b0190565b90565b611d4c611d5191610552565b611d3d565b9052565b611d65611d6c9160209493611d14565b8092611d40565b0190565b611d84611d7b6103a2565b92839283611d55565b03902090565b611d9391611d70565b90565b611da6906008611dab9302610c6a565b61091f565b90565b90611db99154611d96565b90565b90611de492611dda611ddf92611dd56009955f96611ce3565b611cf9565b611d8a565b611dae565b90565b34611e1857611e14611e03611dfd366004611c94565b91611dbc565b611e0b6103a2565b91829182610562565b0390f35b6103a8565b909182601f83011215611e555781359160018060401b038311611e50576020019260018302840111611e4b57565b6105b5565b6105b1565b6105ad565b91606083830312611ea557611e71825f85016103d3565b92611e7f836020830161040d565b92604082013560018060401b038111611ea057611e9c9201611e1d565b9091565b6103b0565b6103ac565b34611edc57611ec6611ebd366004611e5a565b9291909161492d565b611ece6103a2565b80611ed881610449565b0390f35b6103a8565b611eea816104c0565b03611ef157565b5f80fd5b90503590611f0282611ee1565b565b91909160a081840312611f6e57611f1d835f83016103d3565b92602082013560018060401b038111611f695781611f3c918401611e1d565b929093611f66611f4f8460408501610707565b93611f5d8160608601610707565b93608001611ef5565b90565b6103b0565b6103ac565b34611fa857611f92611f86366004611f04565b94939093929192614c34565b611f9a6103a2565b80611fa481610449565b0390f35b6103a8565b34611fdb57611fc5611fc0366004610482565b615008565b611fcd6103a2565b80611fd781610449565b0390f35b6103a8565b909160608284031261201557612012611ffb845f85016103d3565b9361200981602086016103d3565b93604001610ab0565b90565b6103ac565b346120495761203361202d366004611fe0565b916150f7565b61203b6103a2565b8061204581610449565b0390f35b6103a8565b3461207d5761206761206136600461041c565b906152f7565b61206f6103a2565b8061207981610449565b0390f35b6103a8565b5190565b60209181520190565b60200190565b906120e3906060806120b4608084015f8701518582035f870152610d9a565b946120c760208201516020860190610dcb565b6120d960408201516040860190610dcb565b01519101906104c5565b90565b906120f091612095565b90565b60200190565b9061210d61210683612082565b8092612086565b908161211e6020830284019461208f565b925f915b83831061213157505050505090565b9091929394602061215361214d838560019503875289516120e6565b976120f3565b9301930191939290612122565b6121759160208201915f8184039101526120f9565b90565b346121a8576121a461219361218e366004610482565b61566c565b61219b6103a2565b91829182612160565b0390f35b6103a8565b346121db576121c56121c0366004610482565b6157be565b6121cd6103a2565b806121d781610449565b0390f35b6103a8565b6121ec600a5f90610c91565b90565b3461221f576121ff366004610bcc565b61221b61220a6121e0565b6122126103a2565b91829182610cbb565b0390f35b6103a8565b346122585761225461224361223a366004611e5a565b9291909161582b565b61224b6103a2565b91829182610562565b0390f35b6103a8565b9061226790610746565b5f5260205260405f2090565b61227f61228491611071565b610943565b90565b6122919054612273565b90565b61229f90600261225d565b6122aa5f8201611037565b916122c15f6122ba818501611064565b9301612287565b90565b6040906122ed6122f494969593966122e360608401985f850190610c13565b6020830190611117565b0190610a12565b565b346123295761232561231161230c366004610482565b612294565b61231c9391936103a2565b938493846122c4565b0390f35b6103a8565b3461235e5761233e366004610bcc565b61235a612349615860565b6123516103a2565b91829182610cbb565b0390f35b6103a8565b346123925761237c61237636600461041c565b906158a2565b6123846103a2565b8061238e81610449565b0390f35b6103a8565b346123c8576123c46123b36123ad36600461041c565b90615a6b565b6123bb6103a2565b91829182611368565b0390f35b6103a8565b346123fb576123e56123e03660046106a2565b615b6a565b6123ed6103a2565b806123f781610449565b0390f35b6103a8565b9190604083820312612428578061241c612425925f86016103d3565b93602001611ef5565b90565b6103ac565b3461245c57612446612440366004612400565b90615b75565b61244e6103a2565b8061245881610449565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b61248d612461565b90565b346124c0576124a0366004610bcc565b6124bc6124ab612485565b6124b36103a2565b91829182610f01565b0390f35b6103a8565b346124f4576124de6124d836600461041c565b90615bd4565b6124e66103a2565b806124f081610449565b0390f35b6103a8565b5f80fd5b61250961250e9161091a565b610c6e565b90565b61251b90546124fd565b90565b90565b61253561253061253a9261251e565b610743565b6103e2565b90565b61254690612521565b90565b5f1b90565b9061255f60018060a01b0391612549565b9181191691161790565b90565b9061258161257c61258892610ff6565b612569565b825461254e565b9055565b336125bf6125b97f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03612629576125d86125d3600783906113b3565b612511565b6125f26125ec6125e75f61253d565b6103ed565b916103ed565b0361260d5761260661260b929160076113b3565b61256c565b565b5f630ea075bf60e21b81528061262560048201610449565b0390fd5b5f6313f058cd60e11b81528061264160048201610449565b0390fd5b61264f60606116a8565b90565b5f90565b5f90565b5f90565b612666612645565b906020808084612674612652565b81520161267f612656565b81520161268a61265a565b81525050565b61269861265e565b90565b6126ad906126a7612690565b50615d35565b90565b5f90565b6126d56126db926126d05f936126c86126b0565b506003610fb8565b611002565b01610936565b90565b5090565b634e487b7160e01b5f52601160045260245ffd5b61270561270b91939293610552565b92610552565b91612717838202610552565b92818404149015171561272657565b6126e2565b6127369060046126f6565b90565b9061274c905f1990602003600802610c6a565b8154169055565b1b90565b9190600861277291029161276c5f1984612753565b92612753565b9181191691161790565b61279061278b61279592610552565b610743565b610552565b90565b90565b91906127b16127ac6127b99361277c565b612798565b908354612757565b9055565b6127cf916127c96126b0565b9161279b565b565b5b8181106127dd575050565b806127ea5f6001936127bd565b016127d2565b90612800905f1990600802610c6a565b191690565b8161280f916127f0565b906002021790565b905f9161282e61282682610811565b928354612805565b905555565b601f602091010490565b919290602082105f1461289657601f841160011461286657612860929350612805565b90555b5b565b509061288c61289193600161288361287d85610811565b92612833565b820191016127d1565b612817565b612863565b506128cd82936128a7600194610811565b6128c66128b385612833565b820192601f8616806128d8575b50612833565b01906127d1565b600202179055612864565b6128e490888603612739565b5f6128c0565b929091600160401b8211612945576020115f1461293657602081105f1461291a5761291491612805565b90555b5b565b60019160ff191661292a84610811565b55600202019055612917565b60019150600202019055612918565b6108bd565b908154612956816107de565b9081831161297f575b81831061296d575b50505050565b6129769361283d565b5f808080612967565b61298b838383876128ea565b61295f565b5f61299a9161294a565b565b634e487b7160e01b5f525f60045260245ffd5b905f036129c1576129bf90612990565b565b61299c565b60035f916129d6838083016129af565b6129e383600183016127bd565b6129f083600283016127bd565b0155565b905f03612a0657612a04906129c6565b565b61299c565b5b818110612a17575050565b80612a245f6004936129f4565b01612a0c565b9091828110612a39575b505050565b612a57612a51612a4b612a629561272b565b9261272b565b92610790565b918201910190612a0b565b5f8080612a34565b90600160401b8111612a8e5781612a83612a8c9361078c565b90828155612a2a565b565b6108bd565b5f612a9d91612a6a565b565b905f03612ab157612aaf90612a93565b565b61299c565b612aca612ac5612acf9261251e565b610743565b610552565b90565b6001612ade9101610552565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612b04570190565b612ae1565b90821015612b23576020612b209202810190612aed565b90565b610778565b903590600160200381360303821215612b68570180359060018060401b038211612b6357602001916001820236038313612b5e57565b612ae9565b612ae5565b612ae1565b91565b5090565b35612b7e816106f3565b90565b90565b5f5260205f2090565b5490565b612b9a81612b8d565b821015612bb457612bac600491612b84565b910201905f90565b610778565b5090565b9190601f8111612bcd575b505050565b612bd9612bfe93610811565b906020612be584612833565b83019310612c06575b612bf790612833565b01906127d1565b5f8080612bc8565b9150612bf781929050612bee565b91612c1f9082612bb9565b9060018060401b038211612cdc57612c4182612c3b85546107de565b85612bbd565b5f90601f8311600114612c7457918091612c63935f92612c68575b5050612805565b90555b565b90915001355f80612c5c565b601f19831691612c8385610811565b925f5b818110612cc457509160029391856001969410612caa575b50505002019055612c66565b612cba910135601f8416906127f0565b90555f8080612c9e565b91936020600181928787013581550195019201612c86565b6108bd565b90612cec9291612c14565b565b90612cfa5f1991612549565b9181191691161790565b90612d19612d14612d209261277c565b612798565b8254612cee565b9055565b35612d2e81611ee1565b90565b90612d3d60ff91612549565b9181191691161790565b612d50906104c0565b90565b90565b90612d6b612d66612d7292612d47565b612d53565b8254612d31565b9055565b90612dd460606003612dda94612d9a5f8201612d945f880188612b28565b91612ce1565b612db360018201612dad60208801612b74565b90612d04565b612dcc60028201612dc660408801612b74565b90612d04565b019201612d24565b90612d56565b565b9190612ded57612deb91612d76565b565b61299c565b90815491600160401b831015612e1d5782612e15916001612e1b95018155612b91565b90612ddc565b565b6108bd565b92919033612e4b612e45612e40612e3b600789906113b3565b612511565b6103ed565b916103ed565b03612fd957612e5b8183906126de565b612e74612e6e612e69611559565b610552565b91610552565b11612fbd57612e8e5f612e8960088790610762565b612a9f565b612e975f612ab6565b5b80612eb5612eaf612eaa8587906126de565b610552565b91610552565b1015612fb657612ee5612edf612ed9612ed085878691612b09565b5f810190612b28565b90612b6d565b90612b70565b612efe612ef8612ef3611903565b610552565b91610552565b11612f9a57612f1a6040612f1484868591612b09565b01612b74565b612f42612f3c612f376020612f3187898891612b09565b01612b74565b610552565b91610552565b10612f7e57612f7990612f74612f62612f5d60088990610762565b612b81565b612f6e85878591612b09565b90612df2565b612ad2565b612e98565b5f63a883435760e01b815280612f9660048201610449565b0390fd5b5f63680b6caf60e01b815280612fb260048201610449565b0390fd5b5050509050565b5f632b4406bd60e01b815280612fd560048201610449565b0390fd5b5f63115e986f60e31b815280612ff160048201610449565b0390fd5b90612fff90610746565b5f5260205260405f2090565b90565b61301790610ef1565b90565b6130239061091a565b90565b919061303c6130376130449361300e565b61301a565b908354612757565b9055565b5f90565b61305e91613058613048565b91613026565b565b5f600261307f92613073838083016127bd565b8260018201550161304c565b565b905f036130935761309190613060565b565b61299c565b60481b90565b906130ad60ff60481b91613098565b9181191691161790565b6130c090611147565b90565b90565b906130db6130d66130e2926130b7565b6130c3565b825461309e565b9055565b336131196131137f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b0361322f578161313961313361312e5f61253d565b6103ed565b916103ed565b146132135761316561315f61315861315360068590612ff5565b61300b565b8490615e13565b156104c0565b6131f7576131885f61318361317c60038590610fb8565b8590611002565b613081565b6131ab600260016131a561319e60038690610fb8565b8690611002565b016130c6565b906131df6131d97f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b93610746565b91610ff6565b916131e86103a2565b806131f281610449565b0390a3565b5f630ea075bf60e21b81528061320f60048201610449565b0390fd5b5f63d92e233d60e01b81528061322b60048201610449565b0390fd5b5f6313f058cd60e11b81528061324760048201610449565b0390fd5b61325c90613257615e4d565b61325e565b565b61326990600b61256c565b565b6132749061324b565b565b969594939291906132a361329d6132966132918b6006612ff5565b61300b565b3390615e9b565b156104c0565b6132b2576132b097613489565b565b5f6303fa1eaf60e41b8152806132ca60048201610449565b0390fd5b6132e26132dd6132e7926103b4565b610743565b610552565b90565b6132fe6132f961330392610552565b610743565b6103b4565b90565b91602061332792949361332060408201965f830190610c13565b0190610c13565b565b61333861333e91939293610552565b92610552565b820391821161334957565b6126e2565b60018060401b03811161336a576133666020916108b3565b0190565b6108bd565b9092919261338461337f8261334e565b6116a8565b938185526020850190828401116133a05761339e92611705565b565b6116e0565b6133b091369161336f565b90565b60200190565b5190565b949290979695939160e08601985f87016133d691610ef4565b602086016133e391610cae565b604085016133f091610c13565b606084016133fd91610c13565b6080830161340a91611117565b60a0820161341791610ef4565b60c00161342391610c13565b565b5f61190160f01b910152565b61343d60028092611d0f565b61344681613425565b0190565b90565b61345961345e91610ef1565b61344a565b9052565b602080939261347d61347661348594613431565b809261344d565b01809261344d565b0190565b96909591929394806134a361349d42610552565b916132ce565b11613623576134bb426134b5836132ce565b90613329565b6134d46134ce6134c9610d05565b6132ce565b91610552565b116135fb576135b792918861353b8861352c8b6135b1968b8b6135036134f8612461565b9633999592936133a5565b61351561350f826133b9565b916133b3565b2092936135206103a2565b988997602089016133bd565b602082018103825203826108d1565b61354d613547826133b9565b916133b3565b206135987f000000000000000000000000000000000000000000000000000000000000000061358961357d6103a2565b93849260208401613462565b602082018103825203826108d1565b6135aa6135a4826133b9565b916133b3565b20926133a5565b90615ed5565b6135c96135c3336103ed565b916103ed565b036135df576135dd94933391929394615fd0565b565b5f638baa579f60e01b8152806135f760048201610449565b0390fd5b613604426132ea565b9061361f5f9283926318355b7560e21b845260048401613306565b0390fd5b61362c426132ea565b906136475f9283926357ea02e960e01b845260048401613306565b0390fd5b9061365b97969594939291613276565b565b606090565b90602082820312613690575f82013560018060401b03811161368b57613688920161182d565b90565b6103b0565b6103ac565b906136ac916136a261365d565b5090810190613662565b90565b6136ce6136c96136d3926136c16126b0565b506005612ff5565b61300b565b6163f9565b90565b606090565b60018060401b0381116136f15760208091020190565b6108bd565b90613708613703836136db565b6116a8565b918252565b369037565b9061373761371f836136f6565b9260208061372d86936136db565b920191039061370d565b565b9061374382611228565b811015613754576020809102010190565b610778565b90613763906103ed565b9052565b906137706136d6565b5061378d61378861378360048590612ff5565b61300b565b6163f9565b9161379783613712565b916137a15f612ab6565b5b806137b56137af87610552565b91610552565b10156137fc576137f7906137f26137e06137d96137d460048890612ff5565b61300b565b8390616448565b6137ed8791849092613739565b613759565b612ad2565b6137a2565b5092505090565b5f90565b90613810613803565b50613832600161382c61382560038690610fb8565b8490611002565b01611091565b61384461383e5f611147565b91611147565b14918215613852575b505090565b613873925060019161386861386d926003610fb8565b611002565b01611091565b6138866138806001611147565b91611147565b145f8061384d565b6138b49061389a6136d6565b505f906138ae6138a861131b565b92612ab6565b906145b1565b5090565b939291906138e26138dc6138d56138d0886006612ff5565b61300b565b3390615e9b565b156104c0565b6138f1576138ef9461390d565b565b5f6303fa1eaf60e41b81528061390960048201610449565b0390fd5b9161391f949293913391929394615fd0565b565b9061392e949392916138b8565b565b9061395061394b61395593613943613803565b506006612ff5565b61300b565b615e9b565b90565b5f90565b61397e61398492613979600193613971613958565b506003610fb8565b611002565b01611091565b90565b61399090610fea565b90565b60018060401b0381116139a95760208091020190565b6108bd565b906139c06139bb83613993565b6116a8565b918252565b369037565b906139ef6139d7836139ae565b926020806139e58693613993565b92019103906139c5565b565b906139fb82610d87565b811015613a0c576020809102010190565b610778565b90565b5190565b90613a2282613a14565b811015613a33576020809102010190565b610778565b90613a4290610ef1565b9052565b606090565b90565b60209181520190565b905f9291805490613a71613a6a836107de565b8094613a4e565b916001811690815f14613ac85750600114613a8c575b505050565b613a999192939450610799565b915f925b818410613ab057505001905f8080613a87565b60018160209295939554848601520191019290613a9d565b92949550505060ff19168252151560200201905f8080613a87565b90613aed91613a57565b90565b90613b10613b0992613b006103a2565b93848092613ae3565b03836108d1565b565b613b1b90613af0565b90565b613b289051610ef1565b90565b613b359051610552565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613b6c60136020926109cd565b613b7581613b38565b0190565b613b91613b9f9260408301908382035f8501526109e1565b906020818303910152613b5f565b90565b92916020613bbe613bc69360408701908782035f8901526109e1565b940190610555565b565b905f9291805490613be2613bdb836107de565b80946109cd565b916001811690815f14613c395750600114613bfd575b505050565b613c0a9192939450610811565b915f925b818410613c2157505001905f8080613bf8565b60018160209295939554848601520191019290613c0e565b92949550505060ff19168252151560200201905f8080613bf8565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b613c8860176020926109cd565b613c9181613c54565b0190565b613cad613cbb9260408301908382035f850152613bc8565b906020818303910152613c7b565b90565b9293909333613cdd613cd7613cd230613987565b6103ed565b916103ed565b036142c457613cf6613cf160088690610762565b612b81565b94613d00826139ca565b94613d0a5f612ab6565b5b80613d1e613d1886610552565b91610552565b1015613d7157613d6c90613d67613d425f613d3a8a85906139f1565b510151613a11565b613d54613d4e826133b9565b916133b3565b20613d628a91849092613a18565b613a38565b612ad2565b613d0b565b509194909295613d8081612b8d565b613d92613d8c5f612ab6565b91610552565b1196613d9c613a46565b908861421c575b613dac5f612ab6565b5b80613dc0613dba8b610552565b91610552565b101561407f5760015f8b613eb3575b5090888789613de594613dea575b505050612ad2565b613dad565b825f613e28613e20613e3194613e1b613e136020613e0c613e369b8d906139f1565b5101613b2b565b976009611ce3565b611cf9565b9287906139f1565b51015190611d8a565b612d04565b88878990613e606020613e595f613e4e8789906139f1565b5101519587906139f1565b5101613b2b565b613e93613e8d7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd93610746565b93610ff6565b93613ea8613e9f6103a2565b92839283613ba2565b0390a3888789613ddd565b9a9095929199613ec25f612ab6565b5b80613ede613ed8613ed38a612b8d565b610552565b91610552565b101561406957613ef6613ef18d87613a18565b613b1e565b613f1a613f14613f0f613f0a8a8690613a18565b613b1e565b610ef1565b91610ef1565b14613f2d57613f2890612ad2565b613ec3565b8a919b929c5089613de59495988a926001908a613f576020613f50898b906139f1565b5101613b2b565b613f7f613f79613f746001613f6d868890612b91565b5001610936565b610552565b91610552565b10918888841561401f575b50505050613fb4575b613f9e905b156104c0565b613fad575b9394505050613dcf565b505f613fa3565b905082825f613fc48789906139f1565b51015191614010613ffe613ff87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936140076103a2565b91829182613b79565b0390a3613f9e5f919050613f93565b61405f93945061404d614059936140476020614040614054966002966139f1565b5101613b2b565b96612b91565b5001610936565b610552565b91610552565b118a5f8888613f8a565b5099909a8789613de5949598613f9e8d94613f98565b5097505092935093506140915f612ab6565b935b846140ae6140a86140a386612b8d565b610552565b91610552565b1015614215576140d46140ce60036140c7868990612b91565b500161095d565b156104c0565b61420a576140f66140f15f6140ea868990612b91565b5001613a4b565b613b12565b614108614102826133b9565b916133b3565b20905f966141155f612ab6565b5b8061413161412b61412686613a14565b610552565b91610552565b10156141f85761414a614145848390613a18565b613b1e565b61415c61415686610ef1565b91610ef1565b1461416f5761416a90612ad2565b614116565b5095909650614190915061418560015b156104c0565b614197575b5b612ad2565b9394614093565b82855f6141a5878590612b91565b5001916141f06141de6141d87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936141e76103a2565b91829182613c95565b0390a361418a565b5095909661419092506141859061417f565b94936141909061418b565b5050505050565b96939050614236614231839794999693612b8d565b6139ca565b976142405f612ab6565b5b8061425c6142566142518b612b8d565b610552565b91610552565b10156142b6576142b1906142ac6142876142825f61427b8d8690612b91565b5001613a4b565b613b12565b614299614293826133b9565b916133b3565b206142a78d91849092613a18565b613a38565b612ad2565b614241565b509295919497909396613da3565b5f635f0d793360e11b8152806142dc60048201610449565b0390fd5b6142e8615e4d565b6142f06142f2565b565b6143036142fe5f61253d565b6164e0565b565b61430d6142e0565b565b61431960a06116a8565b90565b5f90565b5f90565b5f90565b61433061430f565b906020808080808661434061431c565b81520161434b612652565b815201614356612656565b815201614361614320565b81520161436c614324565b81525050565b61437a614328565b90565b9061438790610552565b9052565b90614395906103b4565b9052565b906143a3906104ad565b9052565b906143b190611147565b9052565b9061443461442b60026143c661430f565b946143dd6143d55f8301610936565b5f880161437d565b6143f56143ec60018301611037565b6020880161438b565b61440d61440460018301611064565b60408801614399565b61442561441c60018301611091565b606088016143a7565b016110b5565b60808401613a38565b565b61443f906143b5565b90565b6144679161445d61446292614455614372565b506003610fb8565b611002565b614436565b90565b5f90565b9061447890610746565b5f5260205260405f2090565b9061448e90610ff6565b5f5260205260405f2090565b6144bf916144b56144ba926144ad61446a565b50600c61446e565b614484565b611037565b90565b6144ca6164f6565b6144d2615860565b6144e46144de836103ed565b916103ed565b036144f4576144f2906164e0565b565b61450f905f91829163118cdaa760e01b835260048301610cbb565b0390fd5b61453261452d614537926145256126b0565b506004612ff5565b61300b565b6163f9565b90565b61454490516104ad565b90565b61455b6145566145609261251e565b610743565b6104ad565b90565b61456d90516103b4565b90565b61458461457f614589926104ad565b610743565b610552565b90565b61459b6145a191939293610552565b92610552565b82018092116145ac57565b6126e2565b909291926145bd6136d6565b506145c66126b0565b506145d082615d35565b936145ed6145e86145e360058690612ff5565b61300b565b6163f9565b926145fa6020870161453a565b61460c6146065f614547565b916104ad565b1480156146fe575b80156146e3575b6146c9576146558661464f61464a602061464361463e5f6146b29b9c9d01614563565b6132ce565b930161453a565b614570565b906126f6565b918061467061466a61466561131b565b610552565b91610552565b115f146146c4575061468061131b565b5b61468c84829061458c565b61469e61469888610552565b91610552565b115f146146b55750845b909290919261652c565b91565b6146bf908461458c565b6146a8565b614681565b50505091506146df6146da5f612ab6565b613712565b9190565b50826146f76146f186610552565b91610552565b101561461b565b508361471261470c5f612ab6565b91610552565b14614614565b61472990614724615e4d565b61472b565b565b61473690600a61256c565b565b61474190614718565b565b5f90565b61474f614743565b506147595f612511565b90565b5090565b9190811015614770576020020190565b610778565b3561477f816103f9565b90565b5f80fd5b60e01b90565b5f91031261479657565b6103ac565b9160206147bc9294936147b560408201965f830190610c13565b0190610cae565b565b6147c66103a2565b3d5f823e3d90fd5b909291926147db5f612ab6565b5b806147f96147f36147ee85899061475c565b610552565b91610552565b10156148a85761480830613987565b9063ba1fb1038461482361481e868a8691614760565b614775565b93803b156148a3576148485f809461485361483c6103a2565b98899687958694614786565b84526004840161479b565b03925af191821561489e5761486d92614872575b50612ad2565b6147dc565b614891905f3d8111614897575b61488981836108d1565b81019061478c565b5f614867565b503d61487f565b6147be565b614782565b5050509050565b90565b906148c360018060401b0391612549565b9181191691161790565b90565b906148e56148e06148ec92610746565b6148cd565b82546148b2565b9055565b919061490a816149038161490f956109cd565b8095611705565b6108b3565b0190565b909161492a9260208301925f8185039101526148f0565b90565b3361494961494361493e600a612511565b6103ed565b916103ed565b03614a575761497561496f61496861496360058590612ff5565b61300b565b8490615e9b565b156104c0565b614a3b576149a561499a61499561498e60038590610fb8565b8590611002565b6148af565b6001600391016130c6565b6149c36149bc6149b760048490612ff5565b61300b565b8390616648565b506149eb6149d0426132ea565b6149e66149df600c859061446e565b8590614484565b6148d0565b909192614a21614a1b7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b93610ff6565b93614a36614a2d6103a2565b92839283614913565b0390a3565b5f63b651a05160e01b815280614a5360048201610449565b0390fd5b5f63cc71937960e01b815280614a6f60048201610449565b0390fd5b614a7d60806116a8565b90565b614a8b913691611710565b90565b52565b90614a9b906104c0565b9052565b5190565b90614aad816109c9565b9060018060401b038211614b6b57614acf82614ac985546107de565b85612bbd565b602090601f8311600114614b0357918091614af2935f92614af7575b5050612805565b90555b565b90915001515f80614aeb565b601f19831691614b1285610811565b925f5b818110614b5357509160029391856001969410614b39575b50505002019055614af5565b614b49910151601f8416906127f0565b90555f8080614b2d565b91936020600181928787015181550195019201614b15565b6108bd565b90614b7a91614aa3565b565b614b8690516104c0565b90565b90614be660606003614bec94614bac5f8201614ba65f8801614a9f565b90614b70565b614bc560018201614bbf60208801613b2b565b90612d04565b614bde60028201614bd860408801613b2b565b90612d04565b019201614b7c565b90612d56565b565b9190614bff57614bfd91614b89565b565b61299c565b90815491600160401b831015614c2f5782614c27916001614c2d95018155612b91565b90614bee565b565b6108bd565b919392909233614c5f614c59614c54614c4f600788906113b3565b612511565b6103ed565b916103ed565b03614d9a57614c78614c72858790612b6d565b90612b70565b614c91614c8b614c86611903565b610552565b91610552565b11614d7e5780614ca9614ca384610552565b91610552565b10614d6257614cc2614cbd60088590610762565b61078c565b614cdb614cd5614cd0611559565b610552565b91610552565b1015614d4657614d4495614d2d614d3692614d24614d1c614d08614d03614d3f996008610762565b612b81565b989996929496614d16614a73565b9a614a80565b5f8a01614a8e565b6020880161437d565b6040860161437d565b60608401614a91565b614c04565b565b5f632b4406bd60e01b815280614d5e60048201610449565b0390fd5b5f63a883435760e01b815280614d7a60048201610449565b0390fd5b5f63680b6caf60e01b815280614d9660048201610449565b0390fd5b5f63115e986f60e31b815280614db260048201610449565b0390fd5b614ddc614dd6614dcf614dca846006612ff5565b61300b565b3390615e9b565b156104c0565b614deb57614de990614e88565b565b5f6303fa1eaf60e41b815280614e0360048201610449565b0390fd5b60401b90565b90614e1c60ff60401b91614e07565b9181191691161790565b614e3a614e35614e3f926104ad565b610743565b6104ad565b90565b90565b90614e5a614e55614e6192614e26565b614e42565b8254614e0d565b9055565b916020614e86929493614e7f60408201965f83019061115f565b019061115f565b565b614ea6614ea1614e9a60038490610fb8565b3390611002565b6148af565b90614eb360018301611091565b9182614ec8614ec26003611147565b91611147565b14614fec5782614ee0614eda5f611147565b91611147565b148015614fd1575b614fcc57614f0f90614efd60018083016130c6565b6001614f085f614547565b9101614e45565b614f2d614f26614f2160048490612ff5565b61300b565b3390615e13565b508033614f63614f5d7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b91614f6c6103a2565b80614f7681610449565b0390a3903390916001614fb2614fac7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b93614fc7614fbe6103a2565b92839283614e65565b0390a3565b505050565b5082614fe6614fe06001611147565b91611147565b14614ee8565b5f637607924f60e11b81528061500460048201610449565b0390fd5b61501190614db6565b565b90565b61502a61502561502f92615013565b610743565b6103b4565b90565b90565b61504961504461504e92615032565b610743565b6104ad565b90565b61505b60606116a8565b90565b9061507361506e61507a92612d47565b612d53565b825461309e565b9055565b906150c060405f6150c6946150a082820161509a848801614563565b906148d0565b6150b88282016150b26020880161453a565b90614e45565b019201614b7c565b9061505e565b565b906150d29161507e565b565b9160206150f59294936150ee60408201965f830190610c13565b0190611117565b565b3361512a6151247f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b14158061525b575b61523f578161514a615144603c615016565b916103b4565b10615223578261516361515d6001615035565b916104ad565b10615207576151c1826151b0856151a76151895f6151836002899061225d565b01612287565b9161519e615195615051565b955f870161438b565b60208501614399565b60408301614a91565b6151bc6002849061225d565b6150c8565b90916151ed7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea56492610746565b926152026151f96103a2565b928392836150d4565b0390a2565b5f635fd2273960e01b81528061521f60048201610449565b0390fd5b5f63252847a560e11b81528061523b60048201610449565b0390fd5b5f63ea8e4eb560e01b81528061525760048201610449565b0390fd5b503361528261527c615277615272600786906113b3565b612511565b6103ed565b916103ed565b1415615132565b634e487b7160e01b5f52601260045260245ffd5b6152a96152af91610552565b91610552565b9081156152ba570490565b615289565b6152d36152ce6152d892610552565b610743565b6104ad565b90565b6152ef6152ea6152f49261251e565b610743565b6103b4565b90565b61531561531061530960038490610fb8565b8490611002565b6148af565b9061531f81615d35565b61532b60018401611091565b61533e6153386003611147565b91611147565b146155525761534e5f8401610936565b61536061535a5f612ab6565b91610552565b1461554c5761539661537d426153775f8701610936565b90613329565b61539061538b5f8501614563565b6132ce565b9061529d565b806153aa6153a460ff614570565b91610552565b115f1461553e575060ff5b90816153d46153ce6153c960018801611064565b6104ad565b916104ad565b116153e1575b5050505050565b6153ee8260018601614e45565b6154036153fa5f6152db565b600186016148d0565b61542161541b615416602085940161453a565b6104ad565b916104ad565b101580615517575b615434575b806153da565b61544f61544360018501611091565b936001600291016130c6565b61546d61546661546160048590612ff5565b61300b565b8590616648565b5081908490916154bb6154a96154a37f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d93610746565b93610ff6565b936154b26103a2565b91829182611613565b0390a391909160026154f66154f07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361550b6155026103a2565b92839283614e65565b0390a35f80808061542e565b5061552460018401611091565b6155376155316002611147565b91611147565b1415615429565b615547906152bf565b6153b5565b50505050565b50505050565b606090565b60018060401b0381116155735760208091020190565b6108bd565b9061558a6155858361555d565b6116a8565b918252565b61559960806116a8565b90565b906156036155fa60036155ad61558f565b946155c46155bc5f83016108f8565b5f8801614a8e565b6155dc6155d360018301610936565b6020880161437d565b6155f46155eb60028301610936565b6040880161437d565b0161095d565b60608401614a91565b565b61560e9061559c565b90565b9061561b8261078c565b61562481615578565b926156326020850191610790565b5f915b8383106156425750505050565b6004602060019261565285615605565b815201920192019190615635565b61566990615611565b90565b6156836156889161567b615558565b506008610762565b615660565b90565b6156b16156ab6156a461569f846006612ff5565b61300b565b3390615e9b565b156104c0565b6156c0576156be906156dc565b565b5f6303fa1eaf60e41b8152806156d860048201610449565b0390fd5b6156fa6156f56156ee60038490610fb8565b3390611002565b6148af565b9061570760018301611091565b918261571c6157166003611147565b91611147565b146157a257615730906001600491016130c6565b61574e61574761574260048490612ff5565b61300b565b3390616648565b509033909160046157886157827f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361579d6157946103a2565b92839283614e65565b0390a3565b5f637607924f60e11b8152806157ba60048201610449565b0390fd5b6157c79061568b565b565b9091826157d9816157e093611d0f565b8093611705565b0190565b6157f590602094936157fc936157c9565b8092611d40565b0190565b90916158179061580e6103a2565b938493846157e4565b03902090565b909161582892615800565b90565b92615850615858939261584b61585d966158436126b0565b506009611ce3565b611cf9565b91909161581d565b610936565b90565b615868614743565b506158736001612511565b90565b6158809051611147565b90565b90565b61589a61589561589f92615883565b610743565b610552565b90565b90336158c96158c36158be6158b9600787906113b3565b612511565b6103ed565b916103ed565b141580615a49575b615a2d576158f36158ee6158e760038590610fb8565b8390611002565b614436565b6158ff60608201615876565b61591261590c6003611147565b91611147565b03615956575b5061594e6159496159539361594161593a61593560058490612ff5565b61300b565b8590616648565b506004612ff5565b61300b565b616648565b50565b6159d3906159a661599661596986615d35565b61599061598b602061598461597f5f8601614563565b6132ce565b930161453a565b614570565b906126f6565b6159a0600a615886565b906126f6565b6159b15f8301613b2b565b6159c36159bd5f612ab6565b91610552565b1191826159f9575b5050156104c0565b6159dd575f615918565b5f6334a65f4560e11b8152806159f560048201610449565b0390fd5b615a24919250615a18615a1e91615a125f429201613b2b565b90613329565b92610552565b91610552565b10155f806159cb565b5f63ea8e4eb560e01b815280615a4560048201610449565b0390fd5b5033615a64615a5e615a59614747565b6103ed565b916103ed565b14156158d1565b90615a95615a9a91615a7b613803565b50615a90615a8885615d35565b946003610fb8565b611002565b614436565b615aa55f8201613b2b565b615ab7615ab15f612ab6565b91610552565b14615af257615ae8615ae35f615adc615aee94615ad683429201613b2b565b90613329565b9401614563565b6132ce565b91610552565b1090565b50505f90565b615b0990615b04615e4d565b615b0b565b565b615b1681600161256c565b615b1e614747565b90615b52615b4c7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093610ff6565b91610ff6565b91615b5b6103a2565b80615b6581610449565b0390a3565b615b7390615af8565b565b33615b9b615b95615b90615b8b600786906113b3565b612511565b6103ed565b916103ed565b03615bb8575f615bb0615bb69392600261225d565b0161505e565b565b5f63115e986f60e31b815280615bd060048201610449565b0390fd5b33615c07615c017f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03615cbe57615c33615c2d615c26615c2160068590612ff5565b61300b565b8490616648565b156104c0565b615ca257615c55615c4e615c4960048490612ff5565b61300b565b8390616648565b5090615c8a615c847f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e93610746565b91610ff6565b91615c936103a2565b80615c9d81610449565b0390a3565b5f63aba4733960e01b815280615cba60048201610449565b0390fd5b5f6313f058cd60e11b815280615cd660048201610449565b0390fd5b90615d27615d1e5f615cea612645565b94615d01615cf9838301611037565b83880161438b565b615d18615d0f838301611064565b60208801614399565b01612287565b60408401614a91565b565b615d3290615cda565b90565b615d4c615d5191615d44612690565b50600261225d565b615d29565b615d5c5f8201614563565b615d6e615d685f6152db565b916103b4565b14615db4575b615d806020820161453a565b615d92615d8c5f614547565b916104ad565b14615d9b575b90565b615daf615da66115fb565b60208301614399565b615d98565b615dc7615dbf610bfa565b5f830161438b565b615d74565b615dd590610fce565b90565b615dec615de7615df1926103e2565b610743565b610552565b90565b615e08615e03615e0d92610552565b612549565b610ef1565b90565b90565b90615e45615e3f615e3a615e355f615e4a96615e2d613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616704565b90565b615e55614747565b615e6e615e68615e636164f6565b6103ed565b916103ed565b03615e7557565b615e97615e806164f6565b5f91829163118cdaa760e01b835260048301610cbb565b0390fd5b90615ecd615ec7615ec2615ebd5f615ed296615eb5613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616767565b90565b615ef491615eeb91615ee5614743565b506167c3565b90929192616883565b90565b90615f0c615f07615f139261300e565b61301a565b8254612cee565b9055565b615f20906103b4565b60018060401b038114615f335760010190565b6126e2565b90565b615f4f615f4a615f5492615f38565b610743565b6104ad565b90565b916020615f78929493615f7160408201965f830190611117565b0190610555565b565b615f8390610fce565b90565b615f8f90615f7a565b90565b615f9b90610fea565b90565b604090615fc7615fce9496959396615fbd60608401985f850190610cae565b6020830190610c13565b0190610c13565b565b9492939193615ff3615fee615fe760038990610fb8565b8790611002565b6148af565b93615ffd87615d35565b9361600a60018701611091565b61601d6160176003611147565b91611147565b146163dd5761604061603961603460058b90612ff5565b61300b565b8890615e13565b50616115604061605260018901611091565b9661605f425f8b01612d04565b61608961606d8587906133a5565b61607f616079826133b9565b916133b3565b2060028b01615ef7565b61609e6160955f614547565b60018b01614e45565b6160bc60018a016160b66160b182611037565b615f17565b906148d0565b6160c4613958565b50856160d86160d25f614547565b916104ad565b145f14616399576160ef5f995b60018b91016130c6565b876161036160fd6002611147565b91611147565b148061637d575b61630f575b01614b7c565b806162eb575b6162d5575b505085918591924261616461615e6161587f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b994610746565b94610746565b94610ff6565b946161796161706103a2565b92839283615f57565b0390a48061618f61618984611147565b91611147565b0361627f575b50506161a1600b612511565b6161bb6161b56161b05f61253d565b6103ed565b916103ed565b036161c5575b5050565b6161df6161da6161d5600b612511565b615f86565b615f92565b9163d47853b69190926161f1426132ea565b92813b1561627a575f61621791616222829661620b6103a2565b98899788968795614786565b855260048501615f9e565b03925af1908161624e575b50155f14616249576001616244575b5b5f806161c1565b61623c565b61623d565b61626d905f3d8111616273575b61626581836108d1565b81019061478c565b5f61622d565b503d61625b565b614782565b838391926162b66162b07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b936162cb6162c26103a2565b92839283614e65565b0390a35f80616195565b6162e491889188909192616d38565b5f80616120565b506162f7818390612b70565b6163096163035f612ab6565b91610552565b1161611b565b61632c6163256163208d6004612ff5565b61300b565b8b90615e13565b508a8a61636261635c7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b9161636b6103a2565b8061637581610449565b0390a361610f565b508861639261638c6002611147565b91611147565b141561610a565b856163ad6163a76064615f3b565b916104ad565b105f146163c0576160ef6001995b6160e5565b6160ef6001996163d88d8d8b908b908a928c946169f2565b6163bb565b5f637607924f60e11b8152806163f560048201610449565b0390fd5b6164105f616415926164096126b0565b5001615e10565b616ef6565b90565b6164246164299161091a565b61277c565b90565b61644061643b61644592610552565b610743565b6103e2565b90565b61647361646e61647d936164695f61647895616462614743565b5001615e10565b616f64565b616418565b61642c565b610fea565b90565b919060086164a091029161649a60018060a01b0384612753565b92612753565b9181191691161790565b91906164c06164bb6164c893610ff6565b612569565b908354616480565b9055565b6164de916164d8614743565b916164aa565b565b6164f4906164ef5f60016164cc565b616f85565b565b6164fe614743565b503390565b61650c90610552565b5f19811461651a5760010190565b6126e2565b61652990516103ed565b90565b939192936165386136d6565b5061654c616547858490613329565b613712565b926165565f612ab6565b925b8061656b61656588610552565b91610552565b10156165d95761658f61658861658360058690612ff5565b61300b565b8290616448565b61659b84828a91616fe4565b6165af575b506165aa90612ad2565b616558565b6165aa91946165cd6165d2926165c88991849092613739565b613759565b616503565b93906165a0565b5094505091506165e882613712565b926165f25f612ab6565b5b8061660661660086610552565b91610552565b10156166425761663d90616638616626616621868490613739565b61651f565b6166338891849092613739565b613759565b612ad2565b6165f3565b50915050565b9061667a61667461666f61666a5f61667f96616662613803565b500194615dcc565b615dd8565b615df4565b91615e10565b61711c565b90565b90565b5f5260205f2090565b5490565b61669b8161668e565b8210156166b5576166ad600191616685565b910201905f90565b610778565b90815491600160401b8310156166e557826166dd9160016166e395018155616692565b90613026565b565b6108bd565b5490565b906166f89061300e565b5f5260205260405f2090565b61670c613803565b5061672161671b828490616767565b156104c0565b5f146167615761675761675c9261674361673c5f8501616682565b82906166ba565b60016167505f85016166ea565b93016166ee565b612d04565b600190565b50505f90565b61678591600161678092616779613803565b50016166ee565b610936565b6167976167915f612ab6565b91610552565b141590565b5f90565b90565b6167b76167b26167bc926167a0565b610743565b610552565b90565b5f90565b9190916167ce614743565b506167d761679c565b506167e0613048565b506167ea836133b9565b6167fd6167f760416167a3565b91610552565b145f146168445761683d9192616811613048565b5061681a613048565b506168236167bf565b506020810151606060408301519201515f1a90919261729b565b9192909190565b5061684e5f61253d565b9061686261685d6002946133b9565b615df4565b91929190565b6004111561687257565b611124565b9061688182616868565b565b806168966168905f616877565b91616877565b145f146168a1575050565b806168b56168af6001616877565b91616877565b145f146168d8575f63f645eedf60e01b8152806168d460048201610449565b0390fd5b806168ec6168e66002616877565b91616877565b145f1461691a576169166168ff83616418565b5f91829163fce698f760e01b835260048301610562565b0390fd5b61692d6169276003616877565b91616877565b146169355750565b616950905f9182916335e2f38360e21b835260048301610f01565b0390fd5b61696861696361696d926112fc565b610743565b6104ad565b90565b61697c616982916103b4565b916103b4565b90039060018060401b03821161699457565b6126e2565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6169cd601b6020926109cd565b6169d681616999565b0190565b6169ef9060208101905f8183039101526169c0565b90565b9350509250616a0a616a0460c8616954565b916104ad565b1015616a15575b5050565b616a1e426132ea565b616a3c616a37616a30600c859061446e565b8590614484565b611037565b80616a4f616a495f6152db565b916103b4565b14908115616ad5575b50616a64575b50616a11565b616a8390616a7e616a77600c859061446e565b8590614484565b6148d0565b90616ab7616ab17f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b91610ff6565b91616ac06103a2565b80616aca816169da565b0390a35f8080616a5e565b616ae0915082616970565b616af9616af3616aee610f6a565b6103b4565b916103b4565b10155f616a58565b90565b616b18616b13616b1d92616b01565b610743565b610552565b90565b90929192616b35616b30826116e4565b6116a8565b93818552602085019082840111616b5157616b4f926109d6565b565b6116e0565b9080601f83011215616b7457816020616b7193519101616b20565b90565b6105ad565b90505190616b86826106f3565b565b919091604081840312616bd957616b9f60406116a8565b925f8201519160018060401b038311616bd457616bc182616bcd948301616b56565b5f860152602001616b79565b6020830152565b6116dc565b6116d8565b929190616bf2616bed826116bd565b6116a8565b9381855260208086019202810191838311616c475781905b838210616c18575050505050565b815160018060401b038111616c4257602091616c378784938701616b88565b815201910190616c0a565b6105ad565b6105b5565b9080601f83011215616c6a57816020616c6793519101616bde565b90565b6105ad565b90602082820312616c9d575f82015160018060401b038111616c9857616c959201616c4c565b90565b6103b0565b6103ac565b60209181520190565b9190616cc581616cbe81616cca95616ca2565b8095611705565b6108b3565b0190565b9091616ce59260208301925f818503910152616cab565b90565b616cf2603261153d565b90565b949391606091616d3694616d21616d2e93616d1760808b01945f8c0190610c13565b60208a0190610cae565b8782036040890152610e18565b940190610555565b565b91616d44818590612b70565b616d56616d505f612ab6565b91610552565b14616ef057616d66818590612b70565b616d7a616d7461c350616b04565b91610552565b11616eea575f616d8861365d565b94616d9230613987565b616db46331e3bd1b949294616dbf616da86103a2565b96879586948594614786565b845260048401616cce565b03915afa80915f92616ec6575b50155f14616ebd57506001616eb8575b616de583610d87565b616dfe616df8616df3616ce8565b610552565b91610552565b115f14616eaa57616e0d616ce8565b5b616e1730613987565b906365a6936e93929490823b15616ea5575f94616e528692616e4794616e3b6103a2565b998a9889978896614786565b865260048601616cf5565b03925af19081616e79575b50155f14616e74576001616e6f575b5b565b616e6c565b616e6d565b616e98905f3d8111616e9e575b616e9081836108d1565b81019061478c565b5f616e5d565b503d616e86565b614782565b616eb383610d87565b616e0e565b505050565b90925091616ddc565b616ee39192503d805f833e616edb81836108d1565b810190616c6f565b905f616dcc565b50505050565b50505050565b5f616f0a91616f036126b0565b50016166ea565b90565b5f5260205f2090565b616f1f816166ea565b821015616f3957616f31600191616f0d565b910201905f90565b610778565b616f4e906008616f539302610c6a565b61109e565b90565b90616f619154616f3e565b90565b616f82915f616f7c92616f75613048565b5001616f16565b90616f56565b90565b616f8e5f612511565b616f98825f61256c565b90616fcc616fc67f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610ff6565b91610ff6565b91616fd56103a2565b80616fdf81610449565b0390a3565b616fec613803565b5061701461700e61700761700260068590612ff5565b61300b565b8490615e9b565b156104c0565b6170b6576170349161702a61702f926003610fb8565b611002565b614436565b61703f5f8201613b2b565b61705161704b5f612ab6565b91610552565b148015617090575b61708a5761707f617079617085926170735f429201613b2b565b90613329565b92610552565b91610552565b101590565b50505f90565b5061709d60608201615876565b6170b06170aa6003611147565b91611147565b14617059565b5050505f90565b6170d16170cc6170d692615032565b610743565b610552565b90565b634e487b7160e01b5f52603160045260245ffd5b6170f68161668e565b801561711757600190039061711461710e8383616692565b9061304c565b55565b6170d9565b617124613803565b5061713b6171366001830184906166ee565b610936565b908161714f6171495f612ab6565b91610552565b14155f1461721b576171cd9260016171c892846171765f96617170856170bd565b90613329565b6171936171848885016166ea565b61718d866170bd565b90613329565b816171a66171a083610552565b91610552565b036171d2575b5050506171c26171bd868301616682565b6170ed565b016166ee565b6127bd565b600190565b617213926172056171f16171eb61720e948c8901616f16565b90616f56565b936171ff85918c8901616f16565b90613026565b918585016166ee565b612d04565b5f80806171ac565b5050505f90565b90565b61723961723461723e92617222565b610743565b610552565b90565b61727661727d9461726c606094989795617262608086019a5f870190610ef4565b6020850190611117565b6040830190610ef4565b0190610ef4565b565b61729361728e6172989261251e565b612549565b610ef1565b90565b9392936172a6614743565b506172af61679c565b506172b8613048565b506172c285616418565b6172ea6172e46fa2a8918ca85bafe22016d0b997e4df60600160ff1b03617225565b91610552565b11617377579061730d602094955f949392936173046103a2565b94859485617241565b838052039060015afa15617372576173255f51612549565b8061734061733a6173355f61253d565b6103ed565b916103ed565b14617356575f916173505f61727f565b91929190565b506173605f61253d565b60019161736c5f61727f565b91929190565b6147be565b5050506173835f61253d565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:40670:58:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;15170:465::-;;;;;:::i;:::-;15257:24;;15362:95;15334:284;15475:35;15528:14;15334:284;15528:14;15560:13;15591;15599:4;15591:13;:::i;:::-;15334:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15311:317;;;;:::i;:::-;;;:::i;:::-;;15292:336;;15170:465::o;984:1491:2:-;;;;:::i;:::-;:::o;6415:40670:58:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:1:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:40670:58;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:2:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:40670:58:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:1:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b6124f9565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124c5565b612490565b61242d565b6123cd565b612397565b612363565b61232e565b6122f6565b612224565b6121ef565b6121ad565b612178565b61204e565b61201a565b611fad565b611f73565b611eaa565b611de7565b611c60565b611baa565b611b77565b611b40565b611aab565b611a78565b611a42565b611a0c565b611950565b61191b565b6118ad565b611672565b611628565b6115a6565b611571565b611503565b611470565b611417565b6113e2565b61137d565b611333565b6112c7565b6111f3565b6111b9565b610f83565b610f16565b610e97565b610d1e565b610cd0565b610c35565b610b8f565b610a62565b6106c0565b61066e565b61063a565b610577565b61051d565b61044e565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060401b031690565b6103c8816103b4565b036103cf57565b5f80fd5b905035906103e0826103bf565b565b60018060a01b031690565b6103f6906103e2565b90565b610402816103ed565b0361040957565b5f80fd5b9050359061041a826103f9565b565b91906040838203126104445780610438610441925f86016103d3565b9360200161040d565b90565b6103ac565b5f0190565b3461047d5761046761046136600461041c565b9061258c565b61046f6103a2565b8061047981610449565b0390f35b6103a8565b9060208282031261049b57610498915f016103d3565b90565b6103ac565b6104a9906103b4565b9052565b60ff1690565b6104bc906104ad565b9052565b151590565b6104ce906104c0565b9052565b90604080610506936104ea5f8201515f8601906104a0565b6104fc602082015160208601906104b3565b01519101906104c5565b565b919061051b905f606085019401906104d2565b565b3461054d57610549610538610533366004610482565b61269b565b6105406103a2565b91829182610508565b0390f35b6103a8565b90565b61055e90610552565b9052565b9190610575905f60208501940190610555565b565b346105a8576105a461059361058d36600461041c565b906126b4565b61059b6103a2565b91829182610562565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f15781359160018060401b0383116105ec5760200192602083028401116105e757565b6105b5565b6105b1565b6105ad565b9190916040818403126106355761060f835f83016103d3565b92602082013560018060401b0381116106305761062c92016105b9565b9091565b6103b0565b6103ac565b346106695761065361064d3660046105f6565b91612e22565b61065b6103a2565b8061066581610449565b0390f35b6103a8565b3461069d5761068761068136600461041c565b906130e6565b61068f6103a2565b8061069981610449565b0390f35b6103a8565b906020828203126106bb576106b8915f0161040d565b90565b6103ac565b346106ee576106d86106d33660046106a2565b61326b565b6106e06103a2565b806106ea81610449565b0390f35b6103a8565b6106fc81610552565b0361070357565b5f80fd5b90503590610714826106f3565b565b919060408382031261073e578061073261073b925f86016103d3565b93602001610707565b90565b6103ac565b90565b61075a61075561075f926103b4565b610743565b6103b4565b90565b9061076c90610746565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107ab8161078c565b8210156107c5576107bd600491610790565b910201905f90565b610778565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156107fe575b60208310146107f957565b6107ca565b91607f16916107ee565b60209181520190565b5f5260205f2090565b905f929180549061083461082d836107de565b8094610808565b916001811690815f1461088b575060011461084f575b505050565b61085c9192939450610811565b915f925b81841061087357505001905f808061084a565b60018160209295939554848601520191019290610860565b92949550505060ff19168252151560200201905f808061084a565b906108b09161081a565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108db906108b3565b810190811060018060401b038211176108f357604052565b6108bd565b90610918610911926109086103a2565b938480926108a6565b03836108d1565b565b5f1c90565b90565b61092e6109339161091a565b61091f565b90565b6109409054610922565b90565b60ff1690565b61095561095a9161091a565b610943565b90565b6109679054610949565b90565b610975906008610762565b9061097f8261078c565b8110156109c55761098f916107a2565b509061099c5f83016108f8565b916109a960018201610936565b916109c260036109bb60028501610936565b930161095d565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a00610a09602093610a0e936109f7816109c9565b938480936109cd565b958691016109d6565b6108b3565b0190565b610a1b906104c0565b9052565b610a59610a6094610a4f610a446060959998969960808601908682035f8801526109e1565b986020850190610555565b6040830190610555565b0190610a12565b565b34610a9757610a93610a7e610a78366004610716565b9061096a565b90610a8a9492946103a2565b94859485610a1f565b0390f35b6103a8565b610aa5816104ad565b03610aac57565b5f80fd5b90503590610abd82610a9c565b565b909182601f83011215610af75781359160018060401b038311610af2576020019260018302840111610aed57565b6105b5565b6105b1565b6105ad565b919060c083820312610b8a57610b14815f85016103d3565b92610b2282602083016103d3565b92610b308360408401610ab0565b92606083013560018060401b038111610b855781610b4f918501610abf565b929093610b5f83608083016103d3565b9260a082013560018060401b038111610b8057610b7c9201610abf565b9091565b6103b0565b6103b0565b6103ac565b34610bc757610bb1610ba2366004610afc565b9695909594919493929361364b565b610bb96103a2565b80610bc381610449565b0390f35b6103a8565b5f910312610bd657565b6103ac565b90565b610bf2610bed610bf792610bdb565b610743565b6103b4565b90565b610c0561012c610bde565b90565b610c10610bfa565b90565b610c1c906103b4565b9052565b9190610c33905f60208501940190610c13565b565b34610c6557610c45366004610bcc565b610c61610c50610c08565b610c586103a2565b91829182610c20565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c89906008610c8e9302610c6a565b610c6e565b90565b90610c9c9154610c79565b90565b610cab600b5f90610c91565b90565b610cb7906103ed565b9052565b9190610cce905f60208501940190610cae565b565b34610d0057610ce0366004610bcc565b610cfc610ceb610c9f565b610cf36103a2565b91829182610cbb565b0390f35b6103a8565b610d1061012c610bde565b90565b610d1b610d05565b90565b34610d4e57610d2e366004610bcc565b610d4a610d39610d13565b610d416103a2565b91829182610c20565b0390f35b6103a8565b90602082820312610d82575f82013560018060401b038111610d7d57610d799201610abf565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610db9610dc2602093610dc793610db0816109c9565b93848093610808565b958691016109d6565b6108b3565b0190565b610dd490610552565b9052565b90610e0290602080610df7604084015f8701518582035f870152610d9a565b940151910190610dcb565b90565b90610e0f91610dd8565b90565b60200190565b90610e2c610e2583610d87565b8092610d8b565b9081610e3d60208302840194610d94565b925f915b838310610e5057505050505090565b90919293946020610e72610e6c83856001950387528951610e05565b97610e12565b9301930191939290610e41565b610e949160208201915f818403910152610e18565b90565b34610ec857610ec4610eb3610ead366004610d53565b90613695565b610ebb6103a2565b91829182610e7f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610efd90610ef1565b9052565b9190610f14905f60208501940190610ef4565b565b34610f4657610f26366004610bcc565b610f42610f31610ecd565b610f396103a2565b91829182610f01565b0390f35b6103a8565b90565b610f62610f5d610f6792610f4b565b610743565b6103b4565b90565b610f75610e10610f4e565b90565b610f80610f6a565b90565b34610fb357610f93366004610bcc565b610faf610f9e610f78565b610fa66103a2565b91829182610c20565b0390f35b6103a8565b90610fc290610746565b5f5260205260405f2090565b610fe2610fdd610fe7926103e2565b610743565b6103e2565b90565b610ff390610fce565b90565b610fff90610fea565b90565b9061100c90610ff6565b5f5260205260405f2090565b60018060401b031690565b61102f6110349161091a565b611018565b90565b6110419054611023565b90565b60401c90565b60ff1690565b61105c61106191611044565b61104a565b90565b61106e9054611050565b90565b60481c90565b60ff1690565b61108961108e91611071565b611077565b90565b61109b905461107d565b90565b90565b6110ad6110b29161091a565b61109e565b90565b6110bf90546110a1565b90565b906110d16110d6926003610fb8565b611002565b6110e15f8201610936565b916110ee60018301611037565b916110fb60018201611064565b91611114600261110d60018501611091565b93016110b5565b90565b611120906104ad565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561114257565b611124565b9061115182611138565b565b61115c90611147565b90565b61116890611153565b9052565b909594926111b7946111a66111b09261119c60809661119260a088019c5f890190610555565b6020870190610c13565b6040850190611117565b606083019061115f565b0190610ef4565b565b346111ee576111ea6111d56111cf36600461041c565b906110c2565b916111e19593956103a2565b9586958661116c565b0390f35b6103a8565b346112235761121f61120e611209366004610482565b6136af565b6112166103a2565b91829182610562565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611244906103ed565b9052565b906112558160209361123b565b0190565b60200190565b9061127c61127661126f84611228565b809361122c565b92611235565b905f5b81811061128c5750505090565b9091926112a561129f6001928651611248565b94611259565b910191909161127f565b6112c49160208201915f81840391015261125f565b90565b346112f7576112f36112e26112dd366004610482565b613767565b6112ea6103a2565b918291826112af565b0390f35b6103a8565b90565b61131361130e611318926112fc565b610743565b610552565b90565b61132560c86112ff565b90565b61133061131b565b90565b3461136357611343366004610bcc565b61135f61134e611328565b6113566103a2565b91829182610562565b0390f35b6103a8565b919061137b905f60208501940190610a12565b565b346113ae576113aa61139961139336600461041c565b90613807565b6113a16103a2565b91829182611368565b0390f35b6103a8565b906113bd90610746565b5f5260205260405f2090565b6113df906113da6007915f926113b3565b610c91565b90565b346114125761140e6113fd6113f8366004610482565b6113c9565b6114056103a2565b91829182610cbb565b0390f35b6103a8565b346114475761144361143261142d366004610482565b61388e565b61143a6103a2565b918291826112af565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114a057611480366004610bcc565b61149c61148b61144c565b6114936103a2565b91829182610cbb565b0390f35b6103a8565b906080828203126114fe576114bc815f84016103d3565b926114ca82602085016103d3565b926114d88360408301610ab0565b92606082013560018060401b0381116114f9576114f59201610abf565b9091565b6103b0565b6103ac565b346115355761151f6115163660046114a5565b93929092613921565b6115276103a2565b8061153181610449565b0390f35b6103a8565b90565b61155161154c6115569261153a565b610743565b610552565b90565b611563603261153d565b90565b61156e611559565b90565b346115a157611581366004610bcc565b61159d61158c611566565b6115946103a2565b91829182610562565b0390f35b6103a8565b346115d7576115d36115c26115bc36600461041c565b90613930565b6115ca6103a2565b91829182611368565b0390f35b6103a8565b90565b6115f36115ee6115f8926115dc565b610743565b6104ad565b90565b61160560036115df565b90565b6116106115fb565b90565b9190611626905f60208501940190611117565b565b3461165857611638366004610bcc565b611654611643611608565b61164b6103a2565b91829182611613565b0390f35b6103a8565b9190611670905f6020850194019061115f565b565b346116a35761169f61168e61168836600461041c565b9061395c565b6116966103a2565b9182918261165d565b0390f35b6103a8565b906116bb6116b46103a2565b92836108d1565b565b60018060401b0381116116d35760208091020190565b6108bd565b5f80fd5b5f80fd5b5f80fd5b60018060401b038111611700576116fc6020916108b3565b0190565b6108bd565b90825f939282370152565b90929192611725611720826116e4565b6116a8565b938185526020850190828401116117415761173f92611705565b565b6116e0565b9080601f830112156117645781602061176193359101611710565b90565b6105ad565b9190916040818403126117ba5761178060406116a8565b925f8201359160018060401b0383116117b5576117a2826117ae948301611746565b5f860152602001610707565b6020830152565b6116dc565b6116d8565b9291906117d36117ce826116bd565b6116a8565b93818552602080860192028101918383116118285781905b8382106117f9575050505050565b813560018060401b038111611823576020916118188784938701611769565b8152019101906117eb565b6105ad565b6105b5565b9080601f8301121561184b57816020611848933591016117bf565b90565b6105ad565b6080818303126118a857611866825f83016103d3565b92611874836020840161040d565b9260408301359060018060401b0382116118a357611897816118a093860161182d565b93606001610707565b90565b6103b0565b6103ac565b346118df576118c96118c0366004611850565b92919091613cbe565b6118d16103a2565b806118db81610449565b0390f35b6103a8565b90565b6118fb6118f6611900926118e4565b610743565b610552565b90565b61190d60406118e7565b90565b611918611903565b90565b3461194b5761192b366004610bcc565b611947611936611910565b61193e6103a2565b91829182610562565b0390f35b6103a8565b3461197e57611960366004610bcc565b611968614305565b6119706103a2565b8061197a81610449565b0390f35b6103a8565b61198c90611153565b9052565b61199990610ef1565b9052565b906080806119f5936119b55f8201515f860190610dcb565b6119c7602082015160208601906104a0565b6119d9604082015160408601906104b3565b6119eb60608201516060860190611983565b0151910190611990565b565b9190611a0a905f60a0850194019061199d565b565b34611a3d57611a39611a28611a2236600461041c565b90614442565b611a306103a2565b918291826119f7565b0390f35b6103a8565b34611a7357611a6f611a5e611a5836600461041c565b9061449a565b611a666103a2565b91829182610c20565b0390f35b6103a8565b34611aa657611a88366004610bcc565b611a906144c2565b611a986103a2565b80611aa281610449565b0390f35b6103a8565b34611adb57611ad7611ac6611ac1366004610482565b614513565b611ace6103a2565b91829182610562565b0390f35b6103a8565b9091606082840312611b1557611b12611afb845f85016103d3565b93611b098160208601610707565b93604001610707565b90565b6103ac565b92916020611b36611b3e9360408701908782035f89015261125f565b940190610555565b565b34611b7257611b59611b53366004611ae0565b916145b1565b90611b6e611b656103a2565b92839283611b1a565b0390f35b6103a8565b34611ba557611b8f611b8a3660046106a2565b614738565b611b976103a2565b80611ba181610449565b0390f35b6103a8565b34611bda57611bba366004610bcc565b611bd6611bc5614747565b611bcd6103a2565b91829182610cbb565b0390f35b6103a8565b909182601f83011215611c175781359160018060401b038311611c12576020019260208302840111611c0d57565b6105b5565b6105b1565b6105ad565b919091604081840312611c5b57611c35835f83016103d3565b92602082013560018060401b038111611c5657611c529201611bdf565b9091565b6103b0565b6103ac565b34611c8f57611c79611c73366004611c1c565b916147ce565b611c816103a2565b80611c8b81610449565b0390f35b6103a8565b91606083830312611cde57611cab825f85016103d3565b92611cb9836020830161040d565b92604082013560018060401b038111611cd957611cd69201611746565b90565b6103b0565b6103ac565b90611ced90610746565b5f5260205260405f2090565b90611d0390610ff6565b5f5260205260405f2090565b905090565b611d39611d3092602092611d27816109c9565b94858093611d0f565b938491016109d6565b0190565b90565b611d4c611d5191610552565b611d3d565b9052565b611d65611d6c9160209493611d14565b8092611d40565b0190565b611d84611d7b6103a2565b92839283611d55565b03902090565b611d9391611d70565b90565b611da6906008611dab9302610c6a565b61091f565b90565b90611db99154611d96565b90565b90611de492611dda611ddf92611dd56009955f96611ce3565b611cf9565b611d8a565b611dae565b90565b34611e1857611e14611e03611dfd366004611c94565b91611dbc565b611e0b6103a2565b91829182610562565b0390f35b6103a8565b909182601f83011215611e555781359160018060401b038311611e50576020019260018302840111611e4b57565b6105b5565b6105b1565b6105ad565b91606083830312611ea557611e71825f85016103d3565b92611e7f836020830161040d565b92604082013560018060401b038111611ea057611e9c9201611e1d565b9091565b6103b0565b6103ac565b34611edc57611ec6611ebd366004611e5a565b9291909161492d565b611ece6103a2565b80611ed881610449565b0390f35b6103a8565b611eea816104c0565b03611ef157565b5f80fd5b90503590611f0282611ee1565b565b91909160a081840312611f6e57611f1d835f83016103d3565b92602082013560018060401b038111611f695781611f3c918401611e1d565b929093611f66611f4f8460408501610707565b93611f5d8160608601610707565b93608001611ef5565b90565b6103b0565b6103ac565b34611fa857611f92611f86366004611f04565b94939093929192614c34565b611f9a6103a2565b80611fa481610449565b0390f35b6103a8565b34611fdb57611fc5611fc0366004610482565b615008565b611fcd6103a2565b80611fd781610449565b0390f35b6103a8565b909160608284031261201557612012611ffb845f85016103d3565b9361200981602086016103d3565b93604001610ab0565b90565b6103ac565b346120495761203361202d366004611fe0565b916150f7565b61203b6103a2565b8061204581610449565b0390f35b6103a8565b3461207d5761206761206136600461041c565b906152f7565b61206f6103a2565b8061207981610449565b0390f35b6103a8565b5190565b60209181520190565b60200190565b906120e3906060806120b4608084015f8701518582035f870152610d9a565b946120c760208201516020860190610dcb565b6120d960408201516040860190610dcb565b01519101906104c5565b90565b906120f091612095565b90565b60200190565b9061210d61210683612082565b8092612086565b908161211e6020830284019461208f565b925f915b83831061213157505050505090565b9091929394602061215361214d838560019503875289516120e6565b976120f3565b9301930191939290612122565b6121759160208201915f8184039101526120f9565b90565b346121a8576121a461219361218e366004610482565b61566c565b61219b6103a2565b91829182612160565b0390f35b6103a8565b346121db576121c56121c0366004610482565b6157be565b6121cd6103a2565b806121d781610449565b0390f35b6103a8565b6121ec600a5f90610c91565b90565b3461221f576121ff366004610bcc565b61221b61220a6121e0565b6122126103a2565b91829182610cbb565b0390f35b6103a8565b346122585761225461224361223a366004611e5a565b9291909161582b565b61224b6103a2565b91829182610562565b0390f35b6103a8565b9061226790610746565b5f5260205260405f2090565b61227f61228491611071565b610943565b90565b6122919054612273565b90565b61229f90600261225d565b6122aa5f8201611037565b916122c15f6122ba818501611064565b9301612287565b90565b6040906122ed6122f494969593966122e360608401985f850190610c13565b6020830190611117565b0190610a12565b565b346123295761232561231161230c366004610482565b612294565b61231c9391936103a2565b938493846122c4565b0390f35b6103a8565b3461235e5761233e366004610bcc565b61235a612349615860565b6123516103a2565b91829182610cbb565b0390f35b6103a8565b346123925761237c61237636600461041c565b906158a2565b6123846103a2565b8061238e81610449565b0390f35b6103a8565b346123c8576123c46123b36123ad36600461041c565b90615a6b565b6123bb6103a2565b91829182611368565b0390f35b6103a8565b346123fb576123e56123e03660046106a2565b615b6a565b6123ed6103a2565b806123f781610449565b0390f35b6103a8565b9190604083820312612428578061241c612425925f86016103d3565b93602001611ef5565b90565b6103ac565b3461245c57612446612440366004612400565b90615b75565b61244e6103a2565b8061245881610449565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b61248d612461565b90565b346124c0576124a0366004610bcc565b6124bc6124ab612485565b6124b36103a2565b91829182610f01565b0390f35b6103a8565b346124f4576124de6124d836600461041c565b90615bd4565b6124e66103a2565b806124f081610449565b0390f35b6103a8565b5f80fd5b61250961250e9161091a565b610c6e565b90565b61251b90546124fd565b90565b90565b61253561253061253a9261251e565b610743565b6103e2565b90565b61254690612521565b90565b5f1b90565b9061255f60018060a01b0391612549565b9181191691161790565b90565b9061258161257c61258892610ff6565b612569565b825461254e565b9055565b336125bf6125b97f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03612629576125d86125d3600783906113b3565b612511565b6125f26125ec6125e75f61253d565b6103ed565b916103ed565b0361260d5761260661260b929160076113b3565b61256c565b565b5f630ea075bf60e21b81528061262560048201610449565b0390fd5b5f6313f058cd60e11b81528061264160048201610449565b0390fd5b61264f60606116a8565b90565b5f90565b5f90565b5f90565b612666612645565b906020808084612674612652565b81520161267f612656565b81520161268a61265a565b81525050565b61269861265e565b90565b6126ad906126a7612690565b50615d35565b90565b5f90565b6126d56126db926126d05f936126c86126b0565b506003610fb8565b611002565b01610936565b90565b5090565b634e487b7160e01b5f52601160045260245ffd5b61270561270b91939293610552565b92610552565b91612717838202610552565b92818404149015171561272657565b6126e2565b6127369060046126f6565b90565b9061274c905f1990602003600802610c6a565b8154169055565b1b90565b9190600861277291029161276c5f1984612753565b92612753565b9181191691161790565b61279061278b61279592610552565b610743565b610552565b90565b90565b91906127b16127ac6127b99361277c565b612798565b908354612757565b9055565b6127cf916127c96126b0565b9161279b565b565b5b8181106127dd575050565b806127ea5f6001936127bd565b016127d2565b90612800905f1990600802610c6a565b191690565b8161280f916127f0565b906002021790565b905f9161282e61282682610811565b928354612805565b905555565b601f602091010490565b919290602082105f1461289657601f841160011461286657612860929350612805565b90555b5b565b509061288c61289193600161288361287d85610811565b92612833565b820191016127d1565b612817565b612863565b506128cd82936128a7600194610811565b6128c66128b385612833565b820192601f8616806128d8575b50612833565b01906127d1565b600202179055612864565b6128e490888603612739565b5f6128c0565b929091600160401b8211612945576020115f1461293657602081105f1461291a5761291491612805565b90555b5b565b60019160ff191661292a84610811565b55600202019055612917565b60019150600202019055612918565b6108bd565b908154612956816107de565b9081831161297f575b81831061296d575b50505050565b6129769361283d565b5f808080612967565b61298b838383876128ea565b61295f565b5f61299a9161294a565b565b634e487b7160e01b5f525f60045260245ffd5b905f036129c1576129bf90612990565b565b61299c565b60035f916129d6838083016129af565b6129e383600183016127bd565b6129f083600283016127bd565b0155565b905f03612a0657612a04906129c6565b565b61299c565b5b818110612a17575050565b80612a245f6004936129f4565b01612a0c565b9091828110612a39575b505050565b612a57612a51612a4b612a629561272b565b9261272b565b92610790565b918201910190612a0b565b5f8080612a34565b90600160401b8111612a8e5781612a83612a8c9361078c565b90828155612a2a565b565b6108bd565b5f612a9d91612a6a565b565b905f03612ab157612aaf90612a93565b565b61299c565b612aca612ac5612acf9261251e565b610743565b610552565b90565b6001612ade9101610552565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612b04570190565b612ae1565b90821015612b23576020612b209202810190612aed565b90565b610778565b903590600160200381360303821215612b68570180359060018060401b038211612b6357602001916001820236038313612b5e57565b612ae9565b612ae5565b612ae1565b91565b5090565b35612b7e816106f3565b90565b90565b5f5260205f2090565b5490565b612b9a81612b8d565b821015612bb457612bac600491612b84565b910201905f90565b610778565b5090565b9190601f8111612bcd575b505050565b612bd9612bfe93610811565b906020612be584612833565b83019310612c06575b612bf790612833565b01906127d1565b5f8080612bc8565b9150612bf781929050612bee565b91612c1f9082612bb9565b9060018060401b038211612cdc57612c4182612c3b85546107de565b85612bbd565b5f90601f8311600114612c7457918091612c63935f92612c68575b5050612805565b90555b565b90915001355f80612c5c565b601f19831691612c8385610811565b925f5b818110612cc457509160029391856001969410612caa575b50505002019055612c66565b612cba910135601f8416906127f0565b90555f8080612c9e565b91936020600181928787013581550195019201612c86565b6108bd565b90612cec9291612c14565b565b90612cfa5f1991612549565b9181191691161790565b90612d19612d14612d209261277c565b612798565b8254612cee565b9055565b35612d2e81611ee1565b90565b90612d3d60ff91612549565b9181191691161790565b612d50906104c0565b90565b90565b90612d6b612d66612d7292612d47565b612d53565b8254612d31565b9055565b90612dd460606003612dda94612d9a5f8201612d945f880188612b28565b91612ce1565b612db360018201612dad60208801612b74565b90612d04565b612dcc60028201612dc660408801612b74565b90612d04565b019201612d24565b90612d56565b565b9190612ded57612deb91612d76565b565b61299c565b90815491600160401b831015612e1d5782612e15916001612e1b95018155612b91565b90612ddc565b565b6108bd565b92919033612e4b612e45612e40612e3b600789906113b3565b612511565b6103ed565b916103ed565b03612fd957612e5b8183906126de565b612e74612e6e612e69611559565b610552565b91610552565b11612fbd57612e8e5f612e8960088790610762565b612a9f565b612e975f612ab6565b5b80612eb5612eaf612eaa8587906126de565b610552565b91610552565b1015612fb657612ee5612edf612ed9612ed085878691612b09565b5f810190612b28565b90612b6d565b90612b70565b612efe612ef8612ef3611903565b610552565b91610552565b11612f9a57612f1a6040612f1484868591612b09565b01612b74565b612f42612f3c612f376020612f3187898891612b09565b01612b74565b610552565b91610552565b10612f7e57612f7990612f74612f62612f5d60088990610762565b612b81565b612f6e85878591612b09565b90612df2565b612ad2565b612e98565b5f63a883435760e01b815280612f9660048201610449565b0390fd5b5f63680b6caf60e01b815280612fb260048201610449565b0390fd5b5050509050565b5f632b4406bd60e01b815280612fd560048201610449565b0390fd5b5f63115e986f60e31b815280612ff160048201610449565b0390fd5b90612fff90610746565b5f5260205260405f2090565b90565b61301790610ef1565b90565b6130239061091a565b90565b919061303c6130376130449361300e565b61301a565b908354612757565b9055565b5f90565b61305e91613058613048565b91613026565b565b5f600261307f92613073838083016127bd565b8260018201550161304c565b565b905f036130935761309190613060565b565b61299c565b60481b90565b906130ad60ff60481b91613098565b9181191691161790565b6130c090611147565b90565b90565b906130db6130d66130e2926130b7565b6130c3565b825461309e565b9055565b336131196131137f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b0361322f578161313961313361312e5f61253d565b6103ed565b916103ed565b146132135761316561315f61315861315360068590612ff5565b61300b565b8490615e13565b156104c0565b6131f7576131885f61318361317c60038590610fb8565b8590611002565b613081565b6131ab600260016131a561319e60038690610fb8565b8690611002565b016130c6565b906131df6131d97f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b93610746565b91610ff6565b916131e86103a2565b806131f281610449565b0390a3565b5f630ea075bf60e21b81528061320f60048201610449565b0390fd5b5f63d92e233d60e01b81528061322b60048201610449565b0390fd5b5f6313f058cd60e11b81528061324760048201610449565b0390fd5b61325c90613257615e4d565b61325e565b565b61326990600b61256c565b565b6132749061324b565b565b969594939291906132a361329d6132966132918b6006612ff5565b61300b565b3390615e9b565b156104c0565b6132b2576132b097613489565b565b5f6303fa1eaf60e41b8152806132ca60048201610449565b0390fd5b6132e26132dd6132e7926103b4565b610743565b610552565b90565b6132fe6132f961330392610552565b610743565b6103b4565b90565b91602061332792949361332060408201965f830190610c13565b0190610c13565b565b61333861333e91939293610552565b92610552565b820391821161334957565b6126e2565b60018060401b03811161336a576133666020916108b3565b0190565b6108bd565b9092919261338461337f8261334e565b6116a8565b938185526020850190828401116133a05761339e92611705565b565b6116e0565b6133b091369161336f565b90565b60200190565b5190565b949290979695939160e08601985f87016133d691610ef4565b602086016133e391610cae565b604085016133f091610c13565b606084016133fd91610c13565b6080830161340a91611117565b60a0820161341791610ef4565b60c00161342391610c13565b565b5f61190160f01b910152565b61343d60028092611d0f565b61344681613425565b0190565b90565b61345961345e91610ef1565b61344a565b9052565b602080939261347d61347661348594613431565b809261344d565b01809261344d565b0190565b96909591929394806134a361349d42610552565b916132ce565b11613623576134bb426134b5836132ce565b90613329565b6134d46134ce6134c9610d05565b6132ce565b91610552565b116135fb576135b792918861353b8861352c8b6135b1968b8b6135036134f8612461565b9633999592936133a5565b61351561350f826133b9565b916133b3565b2092936135206103a2565b988997602089016133bd565b602082018103825203826108d1565b61354d613547826133b9565b916133b3565b206135987f000000000000000000000000000000000000000000000000000000000000000061358961357d6103a2565b93849260208401613462565b602082018103825203826108d1565b6135aa6135a4826133b9565b916133b3565b20926133a5565b90615ed5565b6135c96135c3336103ed565b916103ed565b036135df576135dd94933391929394615fd0565b565b5f638baa579f60e01b8152806135f760048201610449565b0390fd5b613604426132ea565b9061361f5f9283926318355b7560e21b845260048401613306565b0390fd5b61362c426132ea565b906136475f9283926357ea02e960e01b845260048401613306565b0390fd5b9061365b97969594939291613276565b565b606090565b90602082820312613690575f82013560018060401b03811161368b57613688920161182d565b90565b6103b0565b6103ac565b906136ac916136a261365d565b5090810190613662565b90565b6136ce6136c96136d3926136c16126b0565b506005612ff5565b61300b565b6163f9565b90565b606090565b60018060401b0381116136f15760208091020190565b6108bd565b90613708613703836136db565b6116a8565b918252565b369037565b9061373761371f836136f6565b9260208061372d86936136db565b920191039061370d565b565b9061374382611228565b811015613754576020809102010190565b610778565b90613763906103ed565b9052565b906137706136d6565b5061378d61378861378360048590612ff5565b61300b565b6163f9565b9161379783613712565b916137a15f612ab6565b5b806137b56137af87610552565b91610552565b10156137fc576137f7906137f26137e06137d96137d460048890612ff5565b61300b565b8390616448565b6137ed8791849092613739565b613759565b612ad2565b6137a2565b5092505090565b5f90565b90613810613803565b50613832600161382c61382560038690610fb8565b8490611002565b01611091565b61384461383e5f611147565b91611147565b14918215613852575b505090565b613873925060019161386861386d926003610fb8565b611002565b01611091565b6138866138806001611147565b91611147565b145f8061384d565b6138b49061389a6136d6565b505f906138ae6138a861131b565b92612ab6565b906145b1565b5090565b939291906138e26138dc6138d56138d0886006612ff5565b61300b565b3390615e9b565b156104c0565b6138f1576138ef9461390d565b565b5f6303fa1eaf60e41b81528061390960048201610449565b0390fd5b9161391f949293913391929394615fd0565b565b9061392e949392916138b8565b565b9061395061394b61395593613943613803565b506006612ff5565b61300b565b615e9b565b90565b5f90565b61397e61398492613979600193613971613958565b506003610fb8565b611002565b01611091565b90565b61399090610fea565b90565b60018060401b0381116139a95760208091020190565b6108bd565b906139c06139bb83613993565b6116a8565b918252565b369037565b906139ef6139d7836139ae565b926020806139e58693613993565b92019103906139c5565b565b906139fb82610d87565b811015613a0c576020809102010190565b610778565b90565b5190565b90613a2282613a14565b811015613a33576020809102010190565b610778565b90613a4290610ef1565b9052565b606090565b90565b60209181520190565b905f9291805490613a71613a6a836107de565b8094613a4e565b916001811690815f14613ac85750600114613a8c575b505050565b613a999192939450610799565b915f925b818410613ab057505001905f8080613a87565b60018160209295939554848601520191019290613a9d565b92949550505060ff19168252151560200201905f8080613a87565b90613aed91613a57565b90565b90613b10613b0992613b006103a2565b93848092613ae3565b03836108d1565b565b613b1b90613af0565b90565b613b289051610ef1565b90565b613b359051610552565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613b6c60136020926109cd565b613b7581613b38565b0190565b613b91613b9f9260408301908382035f8501526109e1565b906020818303910152613b5f565b90565b92916020613bbe613bc69360408701908782035f8901526109e1565b940190610555565b565b905f9291805490613be2613bdb836107de565b80946109cd565b916001811690815f14613c395750600114613bfd575b505050565b613c0a9192939450610811565b915f925b818410613c2157505001905f8080613bf8565b60018160209295939554848601520191019290613c0e565b92949550505060ff19168252151560200201905f8080613bf8565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b613c8860176020926109cd565b613c9181613c54565b0190565b613cad613cbb9260408301908382035f850152613bc8565b906020818303910152613c7b565b90565b9293909333613cdd613cd7613cd230613987565b6103ed565b916103ed565b036142c457613cf6613cf160088690610762565b612b81565b94613d00826139ca565b94613d0a5f612ab6565b5b80613d1e613d1886610552565b91610552565b1015613d7157613d6c90613d67613d425f613d3a8a85906139f1565b510151613a11565b613d54613d4e826133b9565b916133b3565b20613d628a91849092613a18565b613a38565b612ad2565b613d0b565b509194909295613d8081612b8d565b613d92613d8c5f612ab6565b91610552565b1196613d9c613a46565b908861421c575b613dac5f612ab6565b5b80613dc0613dba8b610552565b91610552565b101561407f5760015f8b613eb3575b5090888789613de594613dea575b505050612ad2565b613dad565b825f613e28613e20613e3194613e1b613e136020613e0c613e369b8d906139f1565b5101613b2b565b976009611ce3565b611cf9565b9287906139f1565b51015190611d8a565b612d04565b88878990613e606020613e595f613e4e8789906139f1565b5101519587906139f1565b5101613b2b565b613e93613e8d7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd93610746565b93610ff6565b93613ea8613e9f6103a2565b92839283613ba2565b0390a3888789613ddd565b9a9095929199613ec25f612ab6565b5b80613ede613ed8613ed38a612b8d565b610552565b91610552565b101561406957613ef6613ef18d87613a18565b613b1e565b613f1a613f14613f0f613f0a8a8690613a18565b613b1e565b610ef1565b91610ef1565b14613f2d57613f2890612ad2565b613ec3565b8a919b929c5089613de59495988a926001908a613f576020613f50898b906139f1565b5101613b2b565b613f7f613f79613f746001613f6d868890612b91565b5001610936565b610552565b91610552565b10918888841561401f575b50505050613fb4575b613f9e905b156104c0565b613fad575b9394505050613dcf565b505f613fa3565b905082825f613fc48789906139f1565b51015191614010613ffe613ff87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936140076103a2565b91829182613b79565b0390a3613f9e5f919050613f93565b61405f93945061404d614059936140476020614040614054966002966139f1565b5101613b2b565b96612b91565b5001610936565b610552565b91610552565b118a5f8888613f8a565b5099909a8789613de5949598613f9e8d94613f98565b5097505092935093506140915f612ab6565b935b846140ae6140a86140a386612b8d565b610552565b91610552565b1015614215576140d46140ce60036140c7868990612b91565b500161095d565b156104c0565b61420a576140f66140f15f6140ea868990612b91565b5001613a4b565b613b12565b614108614102826133b9565b916133b3565b20905f966141155f612ab6565b5b8061413161412b61412686613a14565b610552565b91610552565b10156141f85761414a614145848390613a18565b613b1e565b61415c61415686610ef1565b91610ef1565b1461416f5761416a90612ad2565b614116565b5095909650614190915061418560015b156104c0565b614197575b5b612ad2565b9394614093565b82855f6141a5878590612b91565b5001916141f06141de6141d87fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad631593610746565b93610ff6565b936141e76103a2565b91829182613c95565b0390a361418a565b5095909661419092506141859061417f565b94936141909061418b565b5050505050565b96939050614236614231839794999693612b8d565b6139ca565b976142405f612ab6565b5b8061425c6142566142518b612b8d565b610552565b91610552565b10156142b6576142b1906142ac6142876142825f61427b8d8690612b91565b5001613a4b565b613b12565b614299614293826133b9565b916133b3565b206142a78d91849092613a18565b613a38565b612ad2565b614241565b509295919497909396613da3565b5f635f0d793360e11b8152806142dc60048201610449565b0390fd5b6142e8615e4d565b6142f06142f2565b565b6143036142fe5f61253d565b6164e0565b565b61430d6142e0565b565b61431960a06116a8565b90565b5f90565b5f90565b5f90565b61433061430f565b906020808080808661434061431c565b81520161434b612652565b815201614356612656565b815201614361614320565b81520161436c614324565b81525050565b61437a614328565b90565b9061438790610552565b9052565b90614395906103b4565b9052565b906143a3906104ad565b9052565b906143b190611147565b9052565b9061443461442b60026143c661430f565b946143dd6143d55f8301610936565b5f880161437d565b6143f56143ec60018301611037565b6020880161438b565b61440d61440460018301611064565b60408801614399565b61442561441c60018301611091565b606088016143a7565b016110b5565b60808401613a38565b565b61443f906143b5565b90565b6144679161445d61446292614455614372565b506003610fb8565b611002565b614436565b90565b5f90565b9061447890610746565b5f5260205260405f2090565b9061448e90610ff6565b5f5260205260405f2090565b6144bf916144b56144ba926144ad61446a565b50600c61446e565b614484565b611037565b90565b6144ca6164f6565b6144d2615860565b6144e46144de836103ed565b916103ed565b036144f4576144f2906164e0565b565b61450f905f91829163118cdaa760e01b835260048301610cbb565b0390fd5b61453261452d614537926145256126b0565b506004612ff5565b61300b565b6163f9565b90565b61454490516104ad565b90565b61455b6145566145609261251e565b610743565b6104ad565b90565b61456d90516103b4565b90565b61458461457f614589926104ad565b610743565b610552565b90565b61459b6145a191939293610552565b92610552565b82018092116145ac57565b6126e2565b909291926145bd6136d6565b506145c66126b0565b506145d082615d35565b936145ed6145e86145e360058690612ff5565b61300b565b6163f9565b926145fa6020870161453a565b61460c6146065f614547565b916104ad565b1480156146fe575b80156146e3575b6146c9576146558661464f61464a602061464361463e5f6146b29b9c9d01614563565b6132ce565b930161453a565b614570565b906126f6565b918061467061466a61466561131b565b610552565b91610552565b115f146146c4575061468061131b565b5b61468c84829061458c565b61469e61469888610552565b91610552565b115f146146b55750845b909290919261652c565b91565b6146bf908461458c565b6146a8565b614681565b50505091506146df6146da5f612ab6565b613712565b9190565b50826146f76146f186610552565b91610552565b101561461b565b508361471261470c5f612ab6565b91610552565b14614614565b61472990614724615e4d565b61472b565b565b61473690600a61256c565b565b61474190614718565b565b5f90565b61474f614743565b506147595f612511565b90565b5090565b9190811015614770576020020190565b610778565b3561477f816103f9565b90565b5f80fd5b60e01b90565b5f91031261479657565b6103ac565b9160206147bc9294936147b560408201965f830190610c13565b0190610cae565b565b6147c66103a2565b3d5f823e3d90fd5b909291926147db5f612ab6565b5b806147f96147f36147ee85899061475c565b610552565b91610552565b10156148a85761480830613987565b9063ba1fb1038461482361481e868a8691614760565b614775565b93803b156148a3576148485f809461485361483c6103a2565b98899687958694614786565b84526004840161479b565b03925af191821561489e5761486d92614872575b50612ad2565b6147dc565b614891905f3d8111614897575b61488981836108d1565b81019061478c565b5f614867565b503d61487f565b6147be565b614782565b5050509050565b90565b906148c360018060401b0391612549565b9181191691161790565b90565b906148e56148e06148ec92610746565b6148cd565b82546148b2565b9055565b919061490a816149038161490f956109cd565b8095611705565b6108b3565b0190565b909161492a9260208301925f8185039101526148f0565b90565b3361494961494361493e600a612511565b6103ed565b916103ed565b03614a575761497561496f61496861496360058590612ff5565b61300b565b8490615e9b565b156104c0565b614a3b576149a561499a61499561498e60038590610fb8565b8590611002565b6148af565b6001600391016130c6565b6149c36149bc6149b760048490612ff5565b61300b565b8390616648565b506149eb6149d0426132ea565b6149e66149df600c859061446e565b8590614484565b6148d0565b909192614a21614a1b7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b93610ff6565b93614a36614a2d6103a2565b92839283614913565b0390a3565b5f63b651a05160e01b815280614a5360048201610449565b0390fd5b5f63cc71937960e01b815280614a6f60048201610449565b0390fd5b614a7d60806116a8565b90565b614a8b913691611710565b90565b52565b90614a9b906104c0565b9052565b5190565b90614aad816109c9565b9060018060401b038211614b6b57614acf82614ac985546107de565b85612bbd565b602090601f8311600114614b0357918091614af2935f92614af7575b5050612805565b90555b565b90915001515f80614aeb565b601f19831691614b1285610811565b925f5b818110614b5357509160029391856001969410614b39575b50505002019055614af5565b614b49910151601f8416906127f0565b90555f8080614b2d565b91936020600181928787015181550195019201614b15565b6108bd565b90614b7a91614aa3565b565b614b8690516104c0565b90565b90614be660606003614bec94614bac5f8201614ba65f8801614a9f565b90614b70565b614bc560018201614bbf60208801613b2b565b90612d04565b614bde60028201614bd860408801613b2b565b90612d04565b019201614b7c565b90612d56565b565b9190614bff57614bfd91614b89565b565b61299c565b90815491600160401b831015614c2f5782614c27916001614c2d95018155612b91565b90614bee565b565b6108bd565b919392909233614c5f614c59614c54614c4f600788906113b3565b612511565b6103ed565b916103ed565b03614d9a57614c78614c72858790612b6d565b90612b70565b614c91614c8b614c86611903565b610552565b91610552565b11614d7e5780614ca9614ca384610552565b91610552565b10614d6257614cc2614cbd60088590610762565b61078c565b614cdb614cd5614cd0611559565b610552565b91610552565b1015614d4657614d4495614d2d614d3692614d24614d1c614d08614d03614d3f996008610762565b612b81565b989996929496614d16614a73565b9a614a80565b5f8a01614a8e565b6020880161437d565b6040860161437d565b60608401614a91565b614c04565b565b5f632b4406bd60e01b815280614d5e60048201610449565b0390fd5b5f63a883435760e01b815280614d7a60048201610449565b0390fd5b5f63680b6caf60e01b815280614d9660048201610449565b0390fd5b5f63115e986f60e31b815280614db260048201610449565b0390fd5b614ddc614dd6614dcf614dca846006612ff5565b61300b565b3390615e9b565b156104c0565b614deb57614de990614e88565b565b5f6303fa1eaf60e41b815280614e0360048201610449565b0390fd5b60401b90565b90614e1c60ff60401b91614e07565b9181191691161790565b614e3a614e35614e3f926104ad565b610743565b6104ad565b90565b90565b90614e5a614e55614e6192614e26565b614e42565b8254614e0d565b9055565b916020614e86929493614e7f60408201965f83019061115f565b019061115f565b565b614ea6614ea1614e9a60038490610fb8565b3390611002565b6148af565b90614eb360018301611091565b9182614ec8614ec26003611147565b91611147565b14614fec5782614ee0614eda5f611147565b91611147565b148015614fd1575b614fcc57614f0f90614efd60018083016130c6565b6001614f085f614547565b9101614e45565b614f2d614f26614f2160048490612ff5565b61300b565b3390615e13565b508033614f63614f5d7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b91614f6c6103a2565b80614f7681610449565b0390a3903390916001614fb2614fac7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b93614fc7614fbe6103a2565b92839283614e65565b0390a3565b505050565b5082614fe6614fe06001611147565b91611147565b14614ee8565b5f637607924f60e11b81528061500460048201610449565b0390fd5b61501190614db6565b565b90565b61502a61502561502f92615013565b610743565b6103b4565b90565b90565b61504961504461504e92615032565b610743565b6104ad565b90565b61505b60606116a8565b90565b9061507361506e61507a92612d47565b612d53565b825461309e565b9055565b906150c060405f6150c6946150a082820161509a848801614563565b906148d0565b6150b88282016150b26020880161453a565b90614e45565b019201614b7c565b9061505e565b565b906150d29161507e565b565b9160206150f59294936150ee60408201965f830190610c13565b0190611117565b565b3361512a6151247f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b14158061525b575b61523f578161514a615144603c615016565b916103b4565b10615223578261516361515d6001615035565b916104ad565b10615207576151c1826151b0856151a76151895f6151836002899061225d565b01612287565b9161519e615195615051565b955f870161438b565b60208501614399565b60408301614a91565b6151bc6002849061225d565b6150c8565b90916151ed7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea56492610746565b926152026151f96103a2565b928392836150d4565b0390a2565b5f635fd2273960e01b81528061521f60048201610449565b0390fd5b5f63252847a560e11b81528061523b60048201610449565b0390fd5b5f63ea8e4eb560e01b81528061525760048201610449565b0390fd5b503361528261527c615277615272600786906113b3565b612511565b6103ed565b916103ed565b1415615132565b634e487b7160e01b5f52601260045260245ffd5b6152a96152af91610552565b91610552565b9081156152ba570490565b615289565b6152d36152ce6152d892610552565b610743565b6104ad565b90565b6152ef6152ea6152f49261251e565b610743565b6103b4565b90565b61531561531061530960038490610fb8565b8490611002565b6148af565b9061531f81615d35565b61532b60018401611091565b61533e6153386003611147565b91611147565b146155525761534e5f8401610936565b61536061535a5f612ab6565b91610552565b1461554c5761539661537d426153775f8701610936565b90613329565b61539061538b5f8501614563565b6132ce565b9061529d565b806153aa6153a460ff614570565b91610552565b115f1461553e575060ff5b90816153d46153ce6153c960018801611064565b6104ad565b916104ad565b116153e1575b5050505050565b6153ee8260018601614e45565b6154036153fa5f6152db565b600186016148d0565b61542161541b615416602085940161453a565b6104ad565b916104ad565b101580615517575b615434575b806153da565b61544f61544360018501611091565b936001600291016130c6565b61546d61546661546160048590612ff5565b61300b565b8590616648565b5081908490916154bb6154a96154a37f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d93610746565b93610ff6565b936154b26103a2565b91829182611613565b0390a391909160026154f66154f07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361550b6155026103a2565b92839283614e65565b0390a35f80808061542e565b5061552460018401611091565b6155376155316002611147565b91611147565b1415615429565b615547906152bf565b6153b5565b50505050565b50505050565b606090565b60018060401b0381116155735760208091020190565b6108bd565b9061558a6155858361555d565b6116a8565b918252565b61559960806116a8565b90565b906156036155fa60036155ad61558f565b946155c46155bc5f83016108f8565b5f8801614a8e565b6155dc6155d360018301610936565b6020880161437d565b6155f46155eb60028301610936565b6040880161437d565b0161095d565b60608401614a91565b565b61560e9061559c565b90565b9061561b8261078c565b61562481615578565b926156326020850191610790565b5f915b8383106156425750505050565b6004602060019261565285615605565b815201920192019190615635565b61566990615611565b90565b6156836156889161567b615558565b506008610762565b615660565b90565b6156b16156ab6156a461569f846006612ff5565b61300b565b3390615e9b565b156104c0565b6156c0576156be906156dc565b565b5f6303fa1eaf60e41b8152806156d860048201610449565b0390fd5b6156fa6156f56156ee60038490610fb8565b3390611002565b6148af565b9061570760018301611091565b918261571c6157166003611147565b91611147565b146157a257615730906001600491016130c6565b61574e61574761574260048490612ff5565b61300b565b3390616648565b509033909160046157886157827f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b9361579d6157946103a2565b92839283614e65565b0390a3565b5f637607924f60e11b8152806157ba60048201610449565b0390fd5b6157c79061568b565b565b9091826157d9816157e093611d0f565b8093611705565b0190565b6157f590602094936157fc936157c9565b8092611d40565b0190565b90916158179061580e6103a2565b938493846157e4565b03902090565b909161582892615800565b90565b92615850615858939261584b61585d966158436126b0565b506009611ce3565b611cf9565b91909161581d565b610936565b90565b615868614743565b506158736001612511565b90565b6158809051611147565b90565b90565b61589a61589561589f92615883565b610743565b610552565b90565b90336158c96158c36158be6158b9600787906113b3565b612511565b6103ed565b916103ed565b141580615a49575b615a2d576158f36158ee6158e760038590610fb8565b8390611002565b614436565b6158ff60608201615876565b61591261590c6003611147565b91611147565b03615956575b5061594e6159496159539361594161593a61593560058490612ff5565b61300b565b8590616648565b506004612ff5565b61300b565b616648565b50565b6159d3906159a661599661596986615d35565b61599061598b602061598461597f5f8601614563565b6132ce565b930161453a565b614570565b906126f6565b6159a0600a615886565b906126f6565b6159b15f8301613b2b565b6159c36159bd5f612ab6565b91610552565b1191826159f9575b5050156104c0565b6159dd575f615918565b5f6334a65f4560e11b8152806159f560048201610449565b0390fd5b615a24919250615a18615a1e91615a125f429201613b2b565b90613329565b92610552565b91610552565b10155f806159cb565b5f63ea8e4eb560e01b815280615a4560048201610449565b0390fd5b5033615a64615a5e615a59614747565b6103ed565b916103ed565b14156158d1565b90615a95615a9a91615a7b613803565b50615a90615a8885615d35565b946003610fb8565b611002565b614436565b615aa55f8201613b2b565b615ab7615ab15f612ab6565b91610552565b14615af257615ae8615ae35f615adc615aee94615ad683429201613b2b565b90613329565b9401614563565b6132ce565b91610552565b1090565b50505f90565b615b0990615b04615e4d565b615b0b565b565b615b1681600161256c565b615b1e614747565b90615b52615b4c7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093610ff6565b91610ff6565b91615b5b6103a2565b80615b6581610449565b0390a3565b615b7390615af8565b565b33615b9b615b95615b90615b8b600786906113b3565b612511565b6103ed565b916103ed565b03615bb8575f615bb0615bb69392600261225d565b0161505e565b565b5f63115e986f60e31b815280615bd060048201610449565b0390fd5b33615c07615c017f00000000000000000000000000000000000000000000000000000000000000006103ed565b916103ed565b03615cbe57615c33615c2d615c26615c2160068590612ff5565b61300b565b8490616648565b156104c0565b615ca257615c55615c4e615c4960048490612ff5565b61300b565b8390616648565b5090615c8a615c847f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e93610746565b91610ff6565b91615c936103a2565b80615c9d81610449565b0390a3565b5f63aba4733960e01b815280615cba60048201610449565b0390fd5b5f6313f058cd60e11b815280615cd660048201610449565b0390fd5b90615d27615d1e5f615cea612645565b94615d01615cf9838301611037565b83880161438b565b615d18615d0f838301611064565b60208801614399565b01612287565b60408401614a91565b565b615d3290615cda565b90565b615d4c615d5191615d44612690565b50600261225d565b615d29565b615d5c5f8201614563565b615d6e615d685f6152db565b916103b4565b14615db4575b615d806020820161453a565b615d92615d8c5f614547565b916104ad565b14615d9b575b90565b615daf615da66115fb565b60208301614399565b615d98565b615dc7615dbf610bfa565b5f830161438b565b615d74565b615dd590610fce565b90565b615dec615de7615df1926103e2565b610743565b610552565b90565b615e08615e03615e0d92610552565b612549565b610ef1565b90565b90565b90615e45615e3f615e3a615e355f615e4a96615e2d613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616704565b90565b615e55614747565b615e6e615e68615e636164f6565b6103ed565b916103ed565b03615e7557565b615e97615e806164f6565b5f91829163118cdaa760e01b835260048301610cbb565b0390fd5b90615ecd615ec7615ec2615ebd5f615ed296615eb5613803565b500194615dcc565b615dd8565b615df4565b91615e10565b616767565b90565b615ef491615eeb91615ee5614743565b506167c3565b90929192616883565b90565b90615f0c615f07615f139261300e565b61301a565b8254612cee565b9055565b615f20906103b4565b60018060401b038114615f335760010190565b6126e2565b90565b615f4f615f4a615f5492615f38565b610743565b6104ad565b90565b916020615f78929493615f7160408201965f830190611117565b0190610555565b565b615f8390610fce565b90565b615f8f90615f7a565b90565b615f9b90610fea565b90565b604090615fc7615fce9496959396615fbd60608401985f850190610cae565b6020830190610c13565b0190610c13565b565b9492939193615ff3615fee615fe760038990610fb8565b8790611002565b6148af565b93615ffd87615d35565b9361600a60018701611091565b61601d6160176003611147565b91611147565b146163dd5761604061603961603460058b90612ff5565b61300b565b8890615e13565b50616115604061605260018901611091565b9661605f425f8b01612d04565b61608961606d8587906133a5565b61607f616079826133b9565b916133b3565b2060028b01615ef7565b61609e6160955f614547565b60018b01614e45565b6160bc60018a016160b66160b182611037565b615f17565b906148d0565b6160c4613958565b50856160d86160d25f614547565b916104ad565b145f14616399576160ef5f995b60018b91016130c6565b876161036160fd6002611147565b91611147565b148061637d575b61630f575b01614b7c565b806162eb575b6162d5575b505085918591924261616461615e6161587f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b994610746565b94610746565b94610ff6565b946161796161706103a2565b92839283615f57565b0390a48061618f61618984611147565b91611147565b0361627f575b50506161a1600b612511565b6161bb6161b56161b05f61253d565b6103ed565b916103ed565b036161c5575b5050565b6161df6161da6161d5600b612511565b615f86565b615f92565b9163d47853b69190926161f1426132ea565b92813b1561627a575f61621791616222829661620b6103a2565b98899788968795614786565b855260048501615f9e565b03925af1908161624e575b50155f14616249576001616244575b5b5f806161c1565b61623c565b61623d565b61626d905f3d8111616273575b61626581836108d1565b81019061478c565b5f61622d565b503d61625b565b614782565b838391926162b66162b07f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a0993610746565b93610ff6565b936162cb6162c26103a2565b92839283614e65565b0390a35f80616195565b6162e491889188909192616d38565b5f80616120565b506162f7818390612b70565b6163096163035f612ab6565b91610552565b1161611b565b61632c6163256163208d6004612ff5565b61300b565b8b90615e13565b508a8a61636261635c7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c93610746565b91610ff6565b9161636b6103a2565b8061637581610449565b0390a361610f565b508861639261638c6002611147565b91611147565b141561610a565b856163ad6163a76064615f3b565b916104ad565b105f146163c0576160ef6001995b6160e5565b6160ef6001996163d88d8d8b908b908a928c946169f2565b6163bb565b5f637607924f60e11b8152806163f560048201610449565b0390fd5b6164105f616415926164096126b0565b5001615e10565b616ef6565b90565b6164246164299161091a565b61277c565b90565b61644061643b61644592610552565b610743565b6103e2565b90565b61647361646e61647d936164695f61647895616462614743565b5001615e10565b616f64565b616418565b61642c565b610fea565b90565b919060086164a091029161649a60018060a01b0384612753565b92612753565b9181191691161790565b91906164c06164bb6164c893610ff6565b612569565b908354616480565b9055565b6164de916164d8614743565b916164aa565b565b6164f4906164ef5f60016164cc565b616f85565b565b6164fe614743565b503390565b61650c90610552565b5f19811461651a5760010190565b6126e2565b61652990516103ed565b90565b939192936165386136d6565b5061654c616547858490613329565b613712565b926165565f612ab6565b925b8061656b61656588610552565b91610552565b10156165d95761658f61658861658360058690612ff5565b61300b565b8290616448565b61659b84828a91616fe4565b6165af575b506165aa90612ad2565b616558565b6165aa91946165cd6165d2926165c88991849092613739565b613759565b616503565b93906165a0565b5094505091506165e882613712565b926165f25f612ab6565b5b8061660661660086610552565b91610552565b10156166425761663d90616638616626616621868490613739565b61651f565b6166338891849092613739565b613759565b612ad2565b6165f3565b50915050565b9061667a61667461666f61666a5f61667f96616662613803565b500194615dcc565b615dd8565b615df4565b91615e10565b61711c565b90565b90565b5f5260205f2090565b5490565b61669b8161668e565b8210156166b5576166ad600191616685565b910201905f90565b610778565b90815491600160401b8310156166e557826166dd9160016166e395018155616692565b90613026565b565b6108bd565b5490565b906166f89061300e565b5f5260205260405f2090565b61670c613803565b5061672161671b828490616767565b156104c0565b5f146167615761675761675c9261674361673c5f8501616682565b82906166ba565b60016167505f85016166ea565b93016166ee565b612d04565b600190565b50505f90565b61678591600161678092616779613803565b50016166ee565b610936565b6167976167915f612ab6565b91610552565b141590565b5f90565b90565b6167b76167b26167bc926167a0565b610743565b610552565b90565b5f90565b9190916167ce614743565b506167d761679c565b506167e0613048565b506167ea836133b9565b6167fd6167f760416167a3565b91610552565b145f146168445761683d9192616811613048565b5061681a613048565b506168236167bf565b506020810151606060408301519201515f1a90919261729b565b9192909190565b5061684e5f61253d565b9061686261685d6002946133b9565b615df4565b91929190565b6004111561687257565b611124565b9061688182616868565b565b806168966168905f616877565b91616877565b145f146168a1575050565b806168b56168af6001616877565b91616877565b145f146168d8575f63f645eedf60e01b8152806168d460048201610449565b0390fd5b806168ec6168e66002616877565b91616877565b145f1461691a576169166168ff83616418565b5f91829163fce698f760e01b835260048301610562565b0390fd5b61692d6169276003616877565b91616877565b146169355750565b616950905f9182916335e2f38360e21b835260048301610f01565b0390fd5b61696861696361696d926112fc565b610743565b6104ad565b90565b61697c616982916103b4565b916103b4565b90039060018060401b03821161699457565b6126e2565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6169cd601b6020926109cd565b6169d681616999565b0190565b6169ef9060208101905f8183039101526169c0565b90565b9350509250616a0a616a0460c8616954565b916104ad565b1015616a15575b5050565b616a1e426132ea565b616a3c616a37616a30600c859061446e565b8590614484565b611037565b80616a4f616a495f6152db565b916103b4565b14908115616ad5575b50616a64575b50616a11565b616a8390616a7e616a77600c859061446e565b8590614484565b6148d0565b90616ab7616ab17f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c79193610746565b91610ff6565b91616ac06103a2565b80616aca816169da565b0390a35f8080616a5e565b616ae0915082616970565b616af9616af3616aee610f6a565b6103b4565b916103b4565b10155f616a58565b90565b616b18616b13616b1d92616b01565b610743565b610552565b90565b90929192616b35616b30826116e4565b6116a8565b93818552602085019082840111616b5157616b4f926109d6565b565b6116e0565b9080601f83011215616b7457816020616b7193519101616b20565b90565b6105ad565b90505190616b86826106f3565b565b919091604081840312616bd957616b9f60406116a8565b925f8201519160018060401b038311616bd457616bc182616bcd948301616b56565b5f860152602001616b79565b6020830152565b6116dc565b6116d8565b929190616bf2616bed826116bd565b6116a8565b9381855260208086019202810191838311616c475781905b838210616c18575050505050565b815160018060401b038111616c4257602091616c378784938701616b88565b815201910190616c0a565b6105ad565b6105b5565b9080601f83011215616c6a57816020616c6793519101616bde565b90565b6105ad565b90602082820312616c9d575f82015160018060401b038111616c9857616c959201616c4c565b90565b6103b0565b6103ac565b60209181520190565b9190616cc581616cbe81616cca95616ca2565b8095611705565b6108b3565b0190565b9091616ce59260208301925f818503910152616cab565b90565b616cf2603261153d565b90565b949391606091616d3694616d21616d2e93616d1760808b01945f8c0190610c13565b60208a0190610cae565b8782036040890152610e18565b940190610555565b565b91616d44818590612b70565b616d56616d505f612ab6565b91610552565b14616ef057616d66818590612b70565b616d7a616d7461c350616b04565b91610552565b11616eea575f616d8861365d565b94616d9230613987565b616db46331e3bd1b949294616dbf616da86103a2565b96879586948594614786565b845260048401616cce565b03915afa80915f92616ec6575b50155f14616ebd57506001616eb8575b616de583610d87565b616dfe616df8616df3616ce8565b610552565b91610552565b115f14616eaa57616e0d616ce8565b5b616e1730613987565b906365a6936e93929490823b15616ea5575f94616e528692616e4794616e3b6103a2565b998a9889978896614786565b865260048601616cf5565b03925af19081616e79575b50155f14616e74576001616e6f575b5b565b616e6c565b616e6d565b616e98905f3d8111616e9e575b616e9081836108d1565b81019061478c565b5f616e5d565b503d616e86565b614782565b616eb383610d87565b616e0e565b505050565b90925091616ddc565b616ee39192503d805f833e616edb81836108d1565b810190616c6f565b905f616dcc565b50505050565b50505050565b5f616f0a91616f036126b0565b50016166ea565b90565b5f5260205f2090565b616f1f816166ea565b821015616f3957616f31600191616f0d565b910201905f90565b610778565b616f4e906008616f539302610c6a565b61109e565b90565b90616f619154616f3e565b90565b616f82915f616f7c92616f75613048565b5001616f16565b90616f56565b90565b616f8e5f612511565b616f98825f61256c565b90616fcc616fc67f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610ff6565b91610ff6565b91616fd56103a2565b80616fdf81610449565b0390a3565b616fec613803565b5061701461700e61700761700260068590612ff5565b61300b565b8490615e9b565b156104c0565b6170b6576170349161702a61702f926003610fb8565b611002565b614436565b61703f5f8201613b2b565b61705161704b5f612ab6565b91610552565b148015617090575b61708a5761707f617079617085926170735f429201613b2b565b90613329565b92610552565b91610552565b101590565b50505f90565b5061709d60608201615876565b6170b06170aa6003611147565b91611147565b14617059565b5050505f90565b6170d16170cc6170d692615032565b610743565b610552565b90565b634e487b7160e01b5f52603160045260245ffd5b6170f68161668e565b801561711757600190039061711461710e8383616692565b9061304c565b55565b6170d9565b617124613803565b5061713b6171366001830184906166ee565b610936565b908161714f6171495f612ab6565b91610552565b14155f1461721b576171cd9260016171c892846171765f96617170856170bd565b90613329565b6171936171848885016166ea565b61718d866170bd565b90613329565b816171a66171a083610552565b91610552565b036171d2575b5050506171c26171bd868301616682565b6170ed565b016166ee565b6127bd565b600190565b617213926172056171f16171eb61720e948c8901616f16565b90616f56565b936171ff85918c8901616f16565b90613026565b918585016166ee565b612d04565b5f80806171ac565b5050505f90565b90565b61723961723461723e92617222565b610743565b610552565b90565b61727661727d9461726c606094989795617262608086019a5f870190610ef4565b6020850190611117565b6040830190610ef4565b0190610ef4565b565b61729361728e6172989261251e565b612549565b610ef1565b90565b9392936172a6614743565b506172af61679c565b506172b8613048565b506172c285616418565b6172ea6172e46fa2a8918ca85bafe22016d0b997e4df60600160ff1b03617225565b91610552565b11617377579061730d602094955f949392936173046103a2565b94859485617241565b838052039060015afa15617372576173255f51612549565b8061734061733a6173355f61253d565b6103ed565b916103ed565b14617356575f916173505f61727f565b91929190565b506173605f61253d565b60019161736c5f61727f565b91929190565b6147be565b5050506173835f61253d565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:40670:58:-:0;;;;;;;;;-1:-1:-1;6415:40670:58;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;13770:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:40670;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7852:61::-;7904:9;;;:::i;:::-;7852:61;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;14334:30::-;;;;;;:::i;:::-;;:::o;6415:40670::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;16290:52::-;16333:9;;;:::i;:::-;16290:52;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8134:41::-;;;:::o;6415:40670::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;14462:53::-;14508:7;;;:::i;:::-;14462:53;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;13008:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:40670::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:40670:58;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;41822:43::-;41862:3;;;:::i;:::-;41822:43;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;13640:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14155:35::-;;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;34960:51::-;35009:2;;;:::i;:::-;34960:51;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7981:55::-;8035:1;;;:::i;:::-;7981:55;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;35135:51::-;35184:2;;;:::i;:::-;35135:51;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;13926:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;14241:29::-;;;;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;12868:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8448:189::-;8493:144;8448:189;:::o;:::-;;;:::i;:::-;;:::o;6415:40670::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;32229:264::-;32315:10;:24;;32329:10;32315:24;:::i;:::-;;;:::i;:::-;;32311:53;;32378:24;;:13;32392:9;32378:24;;:::i;:::-;;:::i;:::-;:38;;32406:10;32414:1;32406:10;:::i;:::-;32378:38;:::i;:::-;;;:::i;:::-;;32374:70;;32454:24;:32;32481:5;32454:13;;:24;:::i;:::-;:32;:::i;:::-;32229:264::o;32374:70::-;32425:19;;;;;;;;;;;;:::i;:::-;;;;32311:53;32348:16;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;39626:147::-;39745:21;39626:147;39704:22;;:::i;:::-;39756:9;39745:21;:::i;:::-;39738:28;:::o;6415:40670::-;;;:::o;38526:176::-;38646:35;:49;38526:176;38646:25;:49;38526:176;38620:7;;:::i;:::-;38646:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;38639:56;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;6415:40670:58;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;35961:638::-;;;;36082:10;:38;;36096:24;;:13;36110:9;36096:24;;:::i;:::-;;:::i;:::-;36082:38;:::i;:::-;;;:::i;:::-;;36078:68;;36160:18;:11;;:18;;:::i;:::-;:43;;36181:22;;:::i;:::-;36160:43;:::i;:::-;;;:::i;:::-;;36156:76;;36242:32;;36249:25;:14;36264:9;36249:25;;:::i;:::-;36242:32;:::i;:::-;36289:13;36301:1;36289:13;:::i;:::-;36328:3;36304:1;:22;;36308:18;:11;;:18;;:::i;:::-;36304:22;:::i;:::-;;;:::i;:::-;;;;;36351:33;:26;36357:19;:14;:11;;36369:1;36357:14;;:::i;:::-;:19;;;;;:::i;:::-;36351:26;;:::i;:::-;:33;;:::i;:::-;:58;;36387:22;;:::i;:::-;36351:58;:::i;:::-;;;:::i;:::-;;36347:84;;36449:23;;:14;:11;;36461:1;36449:14;;:::i;:::-;:23;;:::i;:::-;:49;;36475:23;;:14;:11;;36487:1;36475:14;;:::i;:::-;:23;;:::i;:::-;36449:49;:::i;:::-;;;:::i;:::-;;36445:77;;36328:3;36536:14;:46;:30;:25;:14;36551:9;36536:25;;:::i;:::-;:30;:::i;:::-;36567:14;:11;;36579:1;36567:14;;:::i;:::-;36536:46;;:::i;:::-;36328:3;:::i;:::-;36289:13;;36445:77;36507:15;;;;;;;;;;;;:::i;:::-;;;;36347:84;36418:13;;;;;;;;;;;;:::i;:::-;;;;36304:22;;;;;;35961:638::o;36156:76::-;36212:20;;;;;;;;;;;;:::i;:::-;;;;36078:68;36129:17;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;32736:1039::-;32830:10;:24;;32844:10;32830:24;:::i;:::-;;;:::i;:::-;;32826:53;;32893:8;:22;;32905:10;32913:1;32905:10;:::i;:::-;32893:22;:::i;:::-;;;:::i;:::-;;32889:48;;32951:46;32952:45;:35;:31;:20;32973:9;32952:31;;:::i;:::-;:35;:::i;:::-;32988:8;32952:45;;:::i;:::-;32951:46;;:::i;:::-;32947:78;;33418:42;;33425:35;:25;:14;33440:9;33425:25;;:::i;:::-;33451:8;33425:35;;:::i;:::-;33418:42;:::i;:::-;33651:63;33696:18;33651:42;:35;:25;:14;33666:9;33651:25;;:::i;:::-;33677:8;33651:35;;:::i;:::-;:42;:63;:::i;:::-;33759:8;33729:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;32736:1039::o;32947:78::-;33006:19;32425;;;33006;;;;;;;;:::i;:::-;;;;32889:48;32924:13;;;;;;;;;;;;:::i;:::-;;;;32826:53;32863:16;32348;;;32863;;;;;;;;:::i;:::-;;;;1500:62:1;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;36902:188:58:-;37057:26;36902:188;37057:26;;:::i;:::-;36902:188::o;:::-;;;;:::i;:::-;:::o;7140:167::-;;;;;;;;7204:53;7205:52;:40;:31;17181:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;16913:1038::-;;;;;;;;17210:9;:27;;17222:15;17210:27;:::i;:::-;;;:::i;:::-;;17206:95;;17315:27;:15;:27;17333:9;17315:27;:::i;:::-;;;:::i;:::-;:47;;17345:17;;:::i;:::-;17315:47;:::i;:::-;;;:::i;:::-;;17311:135;;17773:25;17528:18;;;17500:139;17528:18;17500:139;17528:18;17773:25;17528:18;;;17596;17528;;:::i;:::-;17548:10;;17560:9;17571:11;17584:10;17606:7;17596:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17616:9;17500:139;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;17477:172;;;;:::i;:::-;;;:::i;:::-;;17686:58;17715:16;17686:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;17676:69;;;;:::i;:::-;;;:::i;:::-;;17788:9;17773:25;:::i;:::-;;;:::i;:::-;17812:20;;17822:10;17812:20;:::i;:::-;;;:::i;:::-;;17808:51;;17936:7;17888:9;17899:11;17912:10;17924;17936:7;;;;:::i;:::-;16913:1038::o;17808:51::-;17841:18;;;;;;;;;;;;:::i;:::-;;;;17311:135;17411:23;17418:15;17411:23;:::i;:::-;17385:50;;;;;;;;;;;;;;;:::i;:::-;;;;17206:95;17277:23;17284:15;17277:23;:::i;:::-;17246:55;;;;;;;;;;;;;;;:::i;:::-;;;;16913:1038;;;;;;;;;;;:::i;:::-;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;37253:160::-;;37371:35;37253:160;37327:25;;:::i;:::-;37382:7;;37371:35;;;;:::i;:::-;37364:42;:::o;45862:136::-;45958:31;:24;:33;45862:136;45932:7;;:::i;:::-;45958:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;45951:40;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;39020:359::-;;39098:16;;:::i;:::-;39142;:36;:34;:27;:16;39159:9;39142:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;39228:5;39214:20;39228:5;39214:20;:::i;:::-;39261:1;39249:13;39261:1;39249:13;:::i;:::-;39275:3;39264:1;:9;;39268:5;39264:9;:::i;:::-;;;:::i;:::-;;;;;39275:3;39306:16;39294:45;39306:33;:30;:27;:16;39323:9;39306:27;;:::i;:::-;:30;:::i;:::-;39337:1;39306:33;;:::i;:::-;39294:45;:6;39301:1;;39294:45;;;:::i;:::-;;:::i;:::-;39275:3;:::i;:::-;39249:13;;39264:9;;;;;39359:13;:::o;6415:40670::-;;;:::o;37969:261::-;;38055:4;;:::i;:::-;38078:14;:42;;:35;:25;:14;38093:9;38078:25;;:::i;:::-;38104:8;38078:35;;:::i;:::-;:42;;:::i;:::-;:64;;38124:18;38078:64;:::i;:::-;;;:::i;:::-;;:145;;;;;37969:261;38071:152;;;:::o;38078:145::-;38158:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;38204:19;38158:65;:::i;:::-;;;:::i;:::-;;38078:145;;;;42076:200;42210:59;42076:200;42157:26;;:::i;:::-;42241:9;42252:1;42255:13;42210:59;42255:13;;:::i;:::-;42210:59;;:::i;:::-;;;:::i;:::-;42195:74;42076:200;:::o;7140:167::-;;;;;7204:53;7205:52;:40;:31;18301:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;18087:320;;18392:7;18087:320;;;;18368:10;18380;18392:7;;;;:::i;:::-;18087:320::o;:::-;;;;;;;;:::i;:::-;:::o;34414:178::-;;34535:40;:31;:50;34414:178;34512:4;;:::i;:::-;34535:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;34528:57;:::o;6415:40670::-;;;:::o;38286:173::-;38410:35;:42;38286:173;38410:25;:42;38286:173;38381:10;;:::i;:::-;38410:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;38403:49;:::o;6415:40670::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;22244:2844::-;;;;;22431:10;:27;;22445:13;22453:4;22445:13;:::i;:::-;22431:27;:::i;:::-;;;:::i;:::-;;22427:54;;22492:66;22533:25;:14;22548:9;22533:25;;:::i;:::-;22492:66;:::i;:::-;22665:8;22651:23;22665:8;22651:23;:::i;:::-;22701:1;22689:13;22701:1;22689:13;:::i;:::-;22718:3;22704:1;:12;;22708:8;22704:12;:::i;:::-;;;:::i;:::-;;;;;22718:3;22769:5;22737:47;22763:20;22769:13;:8;:5;22775:1;22769:8;;:::i;:::-;;:13;;22763:20;:::i;:::-;22753:31;;;;:::i;:::-;;;:::i;:::-;;22737:47;:10;22748:1;;22737:47;;;:::i;:::-;;:::i;:::-;22718:3;:::i;:::-;22689:13;;22704:12;;;;;;;22827:18;:11;:18;:::i;:::-;:22;;22848:1;22827:22;:::i;:::-;;;:::i;:::-;;22928:26;;;:::i;:::-;22968:14;;22964:237;;22684:111;23281:13;23293:1;23281:13;:::i;:::-;23310:3;23296:1;:12;;23300:8;23296:12;:::i;:::-;;;:::i;:::-;;;;;23342:4;23385:5;23463:14;23459:737;;23310:3;24258:5;;;;;23310:3;24258:5;24254:198;;23310:3;;;;;:::i;:::-;23281:13;;24254:198;24334:5;24317:13;:8;24283:33;:48;24334:5;24283:23;24334:14;;:8;24283:65;24334:5;24340:1;24334:8;;:::i;:::-;;:14;;:::i;:::-;24283:12;;:23;:::i;:::-;:33;:::i;:::-;24317:5;24323:1;24317:8;;:::i;:::-;;:13;;24283:48;;:::i;:::-;:65;:::i;:::-;24386:9;;24397:8;24407:5;24422:14;;:8;24407:13;:8;:5;24413:1;24407:8;;:::i;:::-;;:13;;24422:5;24428:1;24422:8;;:::i;:::-;;:14;;:::i;:::-;24371:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;24254:198;;;;;23459:737;23514:1;;;;;;23502:13;23514:1;23502:13;:::i;:::-;23541:3;23517:1;:22;;23521:18;:11;:18;:::i;:::-;23517:22;:::i;:::-;;;:::i;:::-;;;;;23572:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;23589:12;;:9;23599:1;23589:12;;:::i;:::-;;:::i;:::-;23572:29;:::i;:::-;;;:::i;:::-;;23568:433;;23541:3;;;:::i;:::-;23502:13;;23568:433;23649:4;;;;;;;23310:3;23649:4;;;;;;23683:5;;:14;;:8;:5;23689:1;23683:8;;:::i;:::-;;:14;;:::i;:::-;:40;;23700:23;;:14;:11;23712:1;23700:14;;:::i;:::-;;:23;;:::i;:::-;23683:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;23568:433;23679:269;;;;;;23568:433;24108:18;23973:5;23497:522;24108:18;;:::i;:::-;24104:78;;23497:522;23459:737;;;;;;;24104:78;24158:5;;24104:78;;23679:269;23820:9;;;23831:8;23841:13;:8;:5;23847:1;23841:8;;:::i;:::-;;:13;;23804:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;24108:18;23916:5;23679:269;;;;;23683:84;23727:40;:5;;;23744:14;23727:40;:5;:14;;:8;23744:23;23727:5;23744:23;23727:5;:8;:::i;:::-;;:14;;:::i;:::-;23744:11;:14;:::i;:::-;;:23;;:::i;:::-;23727:40;:::i;:::-;;;:::i;:::-;;23683:84;;;;;;23517:22;;;;;;;23310:3;23517:22;;;24108:18;23517:22;;;;23296:12;;;;;;;;;;24523:13;24535:1;24523:13;:::i;:::-;24518:564;24562:3;24538:1;:22;;24542:18;:11;:18;:::i;:::-;24538:22;:::i;:::-;;;:::i;:::-;;;;;24585:24;24586:23;;:14;:11;24598:1;24586:14;;:::i;:::-;;:23;;:::i;:::-;24585:24;;:::i;:::-;24581:38;;24652:37;24662:26;24668:19;:14;:11;24680:1;24668:14;;:::i;:::-;;:19;24662:26;:::i;:::-;24652:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;24716:5;;24752:1;24740:13;24752:1;24740:13;:::i;:::-;24778:3;24755:1;:21;;24759:17;:10;:17;:::i;:::-;24755:21;:::i;:::-;;;:::i;:::-;;;;;24805:13;;:10;24816:1;24805:13;;:::i;:::-;;:::i;:::-;:24;;24822:7;24805:24;:::i;:::-;;;:::i;:::-;;24801:110;;24778:3;;;:::i;:::-;24740:13;;24801:110;24861:4;;;;;24562:3;24861:4;;24942:6;24861:4;24735:190;24942:6;;:::i;:::-;24938:134;;24735:190;24523:13;24562:3;:::i;:::-;24523:13;;;;24938:134;24989:9;25000:8;25010:19;:14;:11;25022:1;25010:14;;:::i;:::-;;:19;24973:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;24938:134;;24755:21;;;;;24562:3;24755:21;;24942:6;24755:21;;;24581:38;24611:8;;24562:3;24611:8;;;24538:22;;;;;;22244:2844::o;22964:237::-;23024:11;;;;23010:33;23024:18;:11;;;;;;:18;:::i;:::-;23010:33;:::i;:::-;23074:1;23062:13;23074:1;23062:13;:::i;:::-;23101:3;23077:1;:22;;23081:18;:11;:18;:::i;:::-;23077:22;:::i;:::-;;;:::i;:::-;;;;;23101:3;23155:11;23124:52;23139:37;23149:26;23155:19;:14;:11;23167:1;23155:14;;:::i;:::-;;:19;23149:26;:::i;:::-;23139:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;23124:52;:9;23134:1;;23124:52;;;:::i;:::-;;:::i;:::-;23101:3;:::i;:::-;23062:13;;23077:22;;;;;;;;;;22964:237;;22427:54;22467:14;;;;;;;;;;;;:::i;:::-;;;;1500:62:1;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:40670:58:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38748:211::-;38910:42;38748:211;38917:25;:35;38748:211;38874:20;;:::i;:::-;38917:14;;:25;:::i;:::-;:35;:::i;:::-;38910:42;:::i;:::-;;:::o;6415:40670::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;46919:164::-;47037:39;46919:164;47037:29;:39;46919:164;47012:6;;:::i;:::-;47037:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;47030:46;:::o;2244:229:2:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;39427:142:58;39526:34;:27;:36;39427:142;39500:7;;:::i;:::-;39526:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;39519:43;:::o;6415:40670::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;42639:780::-;;;;;42803:26;;:::i;:::-;42831:13;;;:::i;:::-;42903:9;42892:21;42903:9;42892:21;:::i;:::-;42931:13;:33;:31;:24;:13;42945:9;42931:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;42979:6;:16;;:6;:16;;:::i;:::-;:21;;42999:1;42979:21;:::i;:::-;;;:::i;:::-;;:35;;;;42639:780;42979:54;;;;42639:780;42975:117;;43122:52;43130:6;43149:25;43157:16;;43122:24;43130:15;;43351:61;43130:6;;;:15;;:::i;:::-;43122:24;:::i;:::-;43157:6;:16;;:::i;:::-;43149:25;:::i;:::-;43122:52;;:::i;:::-;43204:5;;:21;;43212:13;;:::i;:::-;43204:21;:::i;:::-;;;:::i;:::-;;:45;;;;43228:13;;;:::i;:::-;43204:45;43273:18;:6;43282:9;43273:18;;:::i;:::-;:26;;43294:5;43273:26;:::i;:::-;;;:::i;:::-;;:55;;;;43302:5;;43273:55;43378:9;43389:6;43397:3;43402:9;43351:61;;:::i;:::-;42639:780;:::o;43273:55::-;43310:18;:6;;:18;:::i;:::-;43273:55;;43204:45;;;42975:117;43071:1;;;;;43057:16;;43071:1;43057:16;:::i;:::-;;:::i;:::-;43049:32;;:::o;42979:54::-;43018:6;;:15;;43028:5;43018:15;:::i;:::-;;;:::i;:::-;;;42979:54;;:35;43004:5;;:10;;43013:1;43004:10;:::i;:::-;;;:::i;:::-;;42979:35;;1500:62:1;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;36649:182:58:-;36801:23;36649:182;36801:23;;:::i;:::-;36649:182::o;:::-;;;;:::i;:::-;:::o;6415:40670::-;;;:::o;1638:85:1:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:40670:58:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;28241:224;;;;;28343:13;28355:1;28343:13;:::i;:::-;28380:3;28358:1;:20;;28362:16;:9;;:16;;:::i;:::-;28358:20;:::i;:::-;;;:::i;:::-;;;;;28399:24;:4;:24;:::i;:::-;;;28424:9;28435:12;;:9;;28445:1;28435:12;;:::i;:::-;;:::i;:::-;28399:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;28380:3;28399:49;;;28380:3;;;:::i;:::-;28343:13;;28399:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;28358:20::-;;;;;;28241:224::o;6415:40670::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;46080:759::-;46199:10;:28;;46213:14;;;:::i;:::-;46199:28;:::i;:::-;;;:::i;:::-;;46195:60;;46452:44;46453:43;:33;:24;:13;46467:9;46453:24;;:::i;:::-;:33;:::i;:::-;46487:8;46453:43;;:::i;:::-;46452:44;;:::i;:::-;46448:74;;46608:33;46533:65;46563:35;:25;:14;46578:9;46563:25;;:::i;:::-;46589:8;46563:35;;:::i;:::-;46533:65;:::i;:::-;46608:12;46623:18;46608:5;:12;:33;:::i;:::-;46651:44;:34;:27;:16;46668:9;46651:27;;:::i;:::-;:34;:::i;:::-;46686:8;46651:44;;:::i;:::-;;46705:65;46747:23;46754:15;46747:23;:::i;:::-;46705:39;:29;:18;46724:9;46705:29;;:::i;:::-;46735:8;46705:39;;:::i;:::-;:65;:::i;:::-;46815:8;46825:6;;46786:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;46080:759::o;46448:74::-;46505:17;;;;;;;;;;;;:::i;:::-;;;;46195:60;46236:19;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;35193:683::-;;;;;;35411:10;:38;;35425:24;;:13;35439:9;35425:24;;:::i;:::-;;:::i;:::-;35411:38;:::i;:::-;;;:::i;:::-;;35407:68;;35489:18;:11;35495:4;;35489:11;;:::i;:::-;:18;;:::i;:::-;:43;;35510:22;;:::i;:::-;35489:43;:::i;:::-;;;:::i;:::-;;35485:69;;35568:8;:19;;35579:8;35568:19;:::i;:::-;;;:::i;:::-;;35564:47;;35625:32;:25;:14;35640:9;35625:25;;:::i;:::-;:32;:::i;:::-;:58;;35661:22;;:::i;:::-;35625:58;:::i;:::-;;;:::i;:::-;;;35621:91;;35723:146;:14;35767:92;;35723:14;35767:92;;35723:30;:25;35767:92;35723:14;;:25;:::i;:::-;:30;:::i;:::-;35792:4;;35808:8;35828;35848;35767:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;35723:146;:::i;:::-;35193:683::o;35621:91::-;35692:20;36212;;;35692;;;;;;;;:::i;:::-;;;;35564:47;35596:15;36507;;;35596;;;;;;;;:::i;:::-;;;;35485:69;35541:13;36418;;;35541;;;;;;;;:::i;:::-;;;;35407:68;35458:17;36129;;;35458;;;;;;;;:::i;:::-;;;;7140:167;7204:53;7205:52;:40;:31;30050:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;6415:40670;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29973:868::-;30071:67;30101:37;:25;:14;30116:9;30101:25;;:::i;:::-;30127:10;30101:37;;:::i;:::-;30071:67;:::i;:::-;30172:5;:12;;:5;:12;;:::i;:::-;30198:9;;:31;;30211:18;30198:31;:::i;:::-;;;:::i;:::-;;30194:86;;30376:9;:31;;30389:18;30376:31;:::i;:::-;;;:::i;:::-;;:67;;;;29973:868;30372:104;;30620:21;30591:19;30576:34;30591:19;30576:12;:5;:12;:34;:::i;:::-;30620:17;:21;30640:1;30620:21;:::i;:::-;:5;:17;:21;:::i;:::-;30651:43;:31;:27;:16;30668:9;30651:27;;:::i;:::-;:31;:::i;:::-;30683:10;30651:43;;:::i;:::-;;30729:9;30740:10;30710:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30791:10;;30803:9;30814:19;;30766:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29973:868::o;30372:104::-;30459:7;;;:::o;30376:67::-;30411:9;;:32;;30424:19;30411:32;:::i;:::-;;;:::i;:::-;;30376:67;;30194:86;30252:17;;;;;;;;;;;;:::i;:::-;;;;29973:868;;;;:::i;:::-;:::o;6415:40670::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;31550:579::-;31653:10;:24;;31667:10;31653:24;:::i;:::-;;;:::i;:::-;;;:66;;;31550:579;31649:94;;31758:8;:13;;31769:2;31758:13;:::i;:::-;;;:::i;:::-;;31754:44;;31832:9;:13;;31844:1;31832:13;:::i;:::-;;;:::i;:::-;;31828:44;;31883:169;31953:8;31913:139;31974:9;31913:139;32000:41;;:27;:16;32017:9;32000:27;;:::i;:::-;:41;;:::i;:::-;31913:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;31883:27;:16;31900:9;31883:27;;:::i;:::-;:169;:::i;:::-;32102:8;32112:9;32068:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;31550:579::o;31828:44::-;31854:18;;;;;;;;;;;;:::i;:::-;;;;31754:44;31780:18;;;;;;;;;;;;:::i;:::-;;;;31649:94;31728:15;;;;;;;;;;;;:::i;:::-;;;;31653:66;31681:10;;:38;;31695:24;;:13;31709:9;31695:24;;:::i;:::-;;:::i;:::-;31681:38;:::i;:::-;;;:::i;:::-;;;31653:66;;6415:40670;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;26840:1348::-;26924:65;26954:35;:25;:14;26969:9;26954:25;;:::i;:::-;26980:8;26954:35;;:::i;:::-;26924:65;:::i;:::-;27042:9;27031:21;27042:9;27031:21;:::i;:::-;27152:12;;:5;:12;;:::i;:::-;:34;;27168:18;27152:34;:::i;:::-;;;:::i;:::-;;27148:47;;27209:19;;:5;:19;;:::i;:::-;:24;;27232:1;27209:24;:::i;:::-;;;:::i;:::-;;27205:92;;27399:25;27325:37;:15;27343:19;;:5;:19;;:::i;:::-;27325:37;;:::i;:::-;27399:25;27409:15;;:6;:15;;:::i;:::-;27399:25;:::i;:::-;;;:::i;:::-;27525:16;:34;;27544:15;27525:34;:::i;:::-;;;:::i;:::-;;:78;;;;27562:15;;27525:78;27618:11;;:31;;27632:17;;:5;:17;;:::i;:::-;27618:31;:::i;:::-;;;:::i;:::-;;27614:568;;27525:78;26840:1348;;;;;:::o;27614:568::-;27665:31;27685:11;27665:17;:5;:17;:31;:::i;:::-;27710:26;;27735:1;27710:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;27755:31;;27770:16;;27755:11;27770:6;:16;;:::i;:::-;27755:31;:::i;:::-;;;:::i;:::-;;;:69;;;27614:568;27751:421;;27614:568;;;;27751:421;27897:33;27867:12;;:5;:12;;:::i;:::-;27912:18;27897:12;27912:18;27897:5;:12;:33;:::i;:::-;27948:44;:34;:27;:16;27965:9;27948:27;;:::i;:::-;:34;:::i;:::-;27983:8;27948:44;;:::i;:::-;;28036:9;28047:8;;28057:11;28016:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;28117:8;28127:9;28138:18;;28092:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27751:421;;;;;;27755:69;27790:5;:12;;:5;:12;;:::i;:::-;:34;;27806:18;27790:34;:::i;:::-;;;:::i;:::-;;;27755:69;;27525:78;27580:23;27586:16;27580:23;:::i;:::-;27525:78;;27205:92;27249:7;;;;:::o;27148:47::-;27188:7;;;;:::o;6415:40670::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;40153:156::-;40277:25;40270:32;40153:156;40233:25;;:::i;:::-;40277:14;;:25;:::i;:::-;40270:32;:::i;:::-;;:::o;7140:167::-;7204:53;7205:52;:40;:31;29356:9;7205:20;:31;:::i;:::-;:40;:::i;:::-;7246:10;7205:52;;:::i;:::-;7204:53;;:::i;:::-;7200:89;;7299:1;;;:::i;:::-;7140:167::o;7200:89::-;7266:23;;;;;;;;;;;;:::i;:::-;;;;29278:497;29377:67;29407:37;:25;:14;29422:9;29407:25;;:::i;:::-;29433:10;29407:37;;:::i;:::-;29377:67;:::i;:::-;29478:5;:12;;:5;:12;;:::i;:::-;29504:9;;:31;;29517:18;29504:31;:::i;:::-;;;:::i;:::-;;29500:86;;29596:33;29611:18;29596:12;29611:18;29596:5;:12;:33;:::i;:::-;29639:46;:34;:27;:16;29656:9;29639:27;;:::i;:::-;:34;:::i;:::-;29674:10;29639:46;;:::i;:::-;;29726:10;;29738:9;29749:18;;29701:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29278:497::o;29500:86::-;29558:17;30252;;;29558;;;;;;;;:::i;:::-;;;;29278:497;;;;:::i;:::-;:::o;6415:40670::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;39830:264::-;;40042:33;:45;39830:264;;40042:23;:45;39830:264;40012:7;;:::i;:::-;40042:12;;:23;:::i;:::-;:33;:::i;:::-;40076:10;;40042:45;;:::i;:::-;;:::i;:::-;40035:52;:::o;1232:99:2:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:40670:58:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;44911:874::-;;45002:10;:38;;45016:24;;:13;45030:9;45016:24;;:::i;:::-;;:::i;:::-;45002:38;:::i;:::-;;;:::i;:::-;;;:63;;;44911:874;44998:91;;45100:64;45129:35;:25;:14;45144:9;45129:25;;:::i;:::-;45155:8;45129:35;;:::i;:::-;45100:64;:::i;:::-;45274:12;;:5;:12;;:::i;:::-;:34;;45290:18;45274:34;:::i;:::-;;;:::i;:::-;;45270:403;;44911:874;45683:13;45734:34;:27;:44;45683:13;:41;:31;:24;:13;45697:9;45683:24;;:::i;:::-;:31;:::i;:::-;45715:8;45683:41;;:::i;:::-;;45734:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;44911:874::o;45270:403::-;45498:92;45367:9;45423:57;:52;45356:21;45367:9;45356:21;:::i;:::-;45450:25;45458:16;;45423:24;45431:15;;:6;:15;;:::i;:::-;45423:24;:::i;:::-;45458:6;:16;;:::i;:::-;45450:25;:::i;:::-;45423:52;;:::i;:::-;:57;45478:2;45423:57;:::i;:::-;;;:::i;:::-;45500:19;;:5;:19;;:::i;:::-;:23;;45522:1;45500:23;:::i;:::-;;;:::i;:::-;;:89;;;;45270:403;45499:91;;45498:92;;:::i;:::-;45494:169;;45270:403;;;45494:169;45617:31;;;;;;;;;;;;:::i;:::-;;;;45500:89;45527:62;:15;;;:37;:62;:15;45545:19;;45527:15;45545:5;:19;;:::i;:::-;45527:37;;:::i;:::-;45568:21;45527:62;:::i;:::-;;;:::i;:::-;;;45500:89;;;;44998:91;45074:15;31728;;;45074;;;;;;;;:::i;:::-;;;;45002:63;45044:10;;:21;;45058:7;;:::i;:::-;45044:21;:::i;:::-;;;:::i;:::-;;;45002:63;;40382:374;;40586:35;40557:64;40382:374;40478:4;;:::i;:::-;40537:9;40586:25;40526:21;40537:9;40526:21;:::i;:::-;40586:14;;:25;:::i;:::-;:35;:::i;:::-;40557:64;:::i;:::-;40636:19;;:5;:19;;:::i;:::-;:24;;40659:1;40636:24;:::i;:::-;;;:::i;:::-;;40632:42;;40692:57;40734:15;;40693:37;40692:57;40693:15;40711:19;40693:15;;40711:5;:19;;:::i;:::-;40693:37;;:::i;:::-;40734:6;:15;;:::i;:::-;40692:57;:::i;:::-;;;:::i;:::-;;40685:64;:::o;40632:42::-;40669:5;;;40662:12;:::o;1500:62:1:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:2:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;34650:225:58:-;34743:10;:38;;34757:24;;:13;34771:9;34757:24;;:::i;:::-;;:::i;:::-;34743:38;:::i;:::-;;;:::i;:::-;;34739:68;;34817:41;:27;:51;34861:7;34817:16;;:27;:::i;:::-;:41;:51;:::i;:::-;34650:225::o;34739:68::-;34790:17;36129;;;34790;;;;;;;;:::i;:::-;;;;33994:349;34090:10;:24;;34104:10;34090:24;:::i;:::-;;;:::i;:::-;;34086:53;;34153:49;34154:48;:38;:31;:20;34175:9;34154:31;;:::i;:::-;:38;:::i;:::-;34193:8;34154:48;;:::i;:::-;34153:49;;:::i;:::-;34149:77;;34236:44;:34;:27;:16;34253:9;34236:27;;:::i;:::-;:34;:::i;:::-;34271:8;34236:44;;:::i;:::-;;34327:8;34295:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;33994:349::o;34149:77::-;34211:15;;;;;;;;;;;;:::i;:::-;;;;34086:53;34123:16;32348;;;34123;;;;;;;;:::i;:::-;;;;6415:40670;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;40803:443::-;40930:27;40898:59;40803:443;40864:22;;:::i;:::-;40930:16;;:27;:::i;:::-;40898:59;:::i;:::-;41016:15;;:6;:15;;:::i;:::-;:20;;41035:1;41016:20;:::i;:::-;;;:::i;:::-;;41012:95;;40803:443;41120:16;;:6;:16;;:::i;:::-;:21;;41140:1;41120:21;:::i;:::-;;;:::i;:::-;;41116:100;;40803:443;41226:13;:::o;41116:100::-;41157:48;41176:29;;:::i;:::-;41157:16;:6;:16;:48;:::i;:::-;41116:100;;41012:95;41052:44;41070:26;;:::i;:::-;41052:15;:6;:15;:44;:::i;:::-;41012:95;;6415:40670;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:21:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:1:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:2;;;;;;1901:40:1;;;;;;:::i;:::-;;;;8844:165:21;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:17:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:40670:58:-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;18460:2216::-;;;;;;18662:65;18692:35;:25;:14;18707:9;18692:25;;:::i;:::-;18718:8;18692:35;;:::i;:::-;18662:65;:::i;:::-;18780:9;18769:21;18780:9;18769:21;:::i;:::-;18863:5;:12;;:5;:12;;:::i;:::-;:34;;18879:18;18863:34;:::i;:::-;;;:::i;:::-;;18859:64;;18985:38;:28;:24;:13;18999:9;18985:24;;:::i;:::-;:28;:::i;:::-;19014:8;18985:38;;:::i;:::-;;20075:20;;19081:12;;:5;:12;;:::i;:::-;19125:15;19103:37;19125:15;19103:19;:5;:19;:37;:::i;:::-;19150:42;19174:18;19184:7;;19174:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;19150:21;:5;:21;:42;:::i;:::-;19202:21;;19222:1;19202:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;19233:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;19323:20;;:::i;:::-;19357:10;;:15;;19371:1;19357:15;:::i;:::-;;;:::i;:::-;;19353:393;;;;19756:24;19400:18;19353:393;;19756:12;19771:9;19756:5;:12;:24;:::i;:::-;19824:9;:31;;19837:18;19824:31;:::i;:::-;;;:::i;:::-;;:66;;;19353:393;19820:196;;19353:393;20075:20;;:::i;:::-;:42;;;19353:393;20071:118;;19353:393;20222:9;;;20233:11;20246:8;20256:10;20268:15;;20204:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;20299:9;:22;;20312:9;20299:22;:::i;:::-;;;:::i;:::-;;20295:114;;19353:393;20486:15;;;;;:::i;:::-;:29;;20505:10;20513:1;20505:10;:::i;:::-;20486:29;:::i;:::-;;;:::i;:::-;;20482:188;;19353:393;18460:2216;;:::o;20482:188::-;20535:49;:33;20552:15;;;:::i;:::-;20535:33;:::i;:::-;:49;:::i;:::-;;;20585:8;20595:9;20613:15;20606:23;20613:15;20606:23;:::i;:::-;20535:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;20482:188;20531:129;;;;;;;;;;;20482:188;;;;20531:129;;;;;;20535:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;20295:114::-;20356:9;20367:8;20377:9;20388;20342:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;20295:114;;;;20071:118;20170:7;20149:9;;20160:8;;20170:7;;;;:::i;:::-;20071:118;;;;20075:42;20099:7;:14;:7;;:14;;:::i;:::-;:18;;20116:1;20099:18;:::i;:::-;;;:::i;:::-;;20075:42;;19820:196;19906:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;19938:8;19906:41;;:::i;:::-;;19985:9;19996:8;19966:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;19820:196;;19824:66;19859:9;;:31;;19872:18;19859:31;:::i;:::-;;;:::i;:::-;;;19824:66;;19353:393;19439:10;:16;;19452:3;19439:16;:::i;:::-;;;:::i;:::-;;19435:311;;;;19756:24;19483:19;19435:311;;19353:393;;19435:311;19756:24;19624:19;19681:9;19727:7;19681:9;19692:11;;19705:8;19715:10;19727:7;;;;;;:::i;:::-;19435:311;;18859:64;18906:17;30252;;;18906;;;;;;;;:::i;:::-;;;;9090:115:21;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:40670:58:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:21:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:40670:58:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:2:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:13:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:40670:58:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;43425:705::-;;;;;43612:26;;:::i;:::-;43692:3;43678:27;43692:12;:3;43698:6;43692:12;;:::i;:::-;43678:27;:::i;:::-;43731:1;43715:17;43731:1;43715:17;:::i;:::-;43760:6;43777:3;43768:1;:7;;43772:3;43768:7;:::i;:::-;;;:::i;:::-;;;;;43809:30;:27;:24;:13;43823:9;43809:24;;:::i;:::-;:27;:::i;:::-;43837:1;43809:30;;:::i;:::-;43857:46;43878:9;43889:2;43893:9;43857:46;;:::i;:::-;43853:126;;43777:3;;;;;:::i;:::-;43748:18;;43853:126;43777:3;43937:2;;43923:16;43957:7;43937:2;43923:16;:4;43928:5;;43923:16;;;:::i;:::-;;:::i;:::-;43957:7;:::i;:::-;43853:126;;;;43768:7;;;;;;;44011:20;44025:5;44011:20;:::i;:::-;44058:1;44046:13;44058:1;44046:13;:::i;:::-;44072:3;44061:1;:9;;44065:5;44061:9;:::i;:::-;;;:::i;:::-;;;;;44072:3;44106:4;44091:22;44106:7;;:4;44111:1;44106:7;;:::i;:::-;;:::i;:::-;44091:22;:9;44101:1;;44091:22;;;:::i;:::-;;:::i;:::-;44072:3;:::i;:::-;44046:13;;44061:9;;;;;43425:705::o;8607:156:21:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:40670:58:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:21:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:40670:58:-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:17:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:40670:58:-;;-1:-1:-1;6415:40670:58;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:17:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:40670:58;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;25162:1016::-;;;;;;25598:17;;25612:3;25598:17;:::i;:::-;;;:::i;:::-;;;25594:513;;25162:1016;;;:::o;25594:513::-;25652:23;25659:15;25652:23;:::i;:::-;25708:39;;:29;:18;25727:9;25708:29;;:::i;:::-;25738:8;25708:39;;:::i;:::-;;:::i;:::-;25765:9;:14;;25778:1;25765:14;:::i;:::-;;;:::i;:::-;;:65;;;;;25594:513;25761:336;;;25594:513;;;;25761:336;25850:53;25892:11;25850:39;:29;:18;25869:9;25850:29;;:::i;:::-;25880:8;25850:39;;:::i;:::-;:53;:::i;:::-;25955:8;25926:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;25761:336;;;;;25765:65;25783:23;:11;;;:23;:::i;:::-;:47;;25810:20;;:::i;:::-;25783:47;:::i;:::-;;;:::i;:::-;;;25765:65;;;6415:40670;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;20814:46::-;20858:2;;;:::i;:::-;20814:46;:::o;20858:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;20867:1122::-;;20975:14;:7;;:14;;:::i;:::-;:19;;20993:1;20975:19;:::i;:::-;;;:::i;:::-;;20971:32;;21080:14;:7;;:14;;:::i;:::-;:23;;21097:6;21080:23;:::i;:::-;;;:::i;:::-;;21076:36;;21253:31;21122:25;;:::i;:::-;21253:4;:22;:4;:22;:::i;:::-;:31;:22;21276:7;;21253:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;20867:1122;21249:152;;;;;;;;;;;21485:12;:5;:12;:::i;:::-;:31;;21500:16;;:::i;:::-;21485:31;:::i;:::-;;;:::i;:::-;;:65;;;;21519:16;;:::i;:::-;21485:65;21722:28;:4;:28;:::i;:::-;;;21751:9;21762:8;21772:5;21779:8;21722:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;21485:65;21718:265;;;;;;;;;;;20867:1122::o;21718:265::-;;;;;;21722:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;21485:65::-;21538:12;:5;:12;:::i;:::-;21485:65;;21249:152;21384:7;;;:::o;21249:152::-;;;;;;;21253:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;21076:36;21105:7;;;;:::o;20971:32::-;20996:7;;;;:::o;4474:107:21:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:40670:58:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:21:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:1:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;44136:511:58:-;44244:4;;:::i;:::-;44343:20;44342:51;44343:50;:40;:31;:20;44364:9;44343:31;;:::i;:::-;:40;:::i;:::-;44384:8;44343:50;;:::i;:::-;44342:51;;:::i;:::-;44338:69;;44418:64;44447:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;44418:64;:::i;:::-;44496:19;;:5;:19;;:::i;:::-;:24;;44519:1;44496:24;:::i;:::-;;;:::i;:::-;;:62;;;;44136:511;44492:80;;44590:50;:37;:50;:15;44608:19;;44590:15;44608:5;:19;;:::i;:::-;44590:37;;:::i;:::-;44631:9;44590:50;:::i;:::-;;;:::i;:::-;;;44583:57;:::o;44492:80::-;44567:5;;;44560:12;:::o;44496:62::-;44524:5;:12;;:5;:12;;:::i;:::-;:34;;44540:18;44524:34;:::i;:::-;;;:::i;:::-;;44496:62;;44338:69;44402:5;;;;44395:12;:::o;6415:40670::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:21:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:40670:58:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:17:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6415:40670:58;6283:66:17;;;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"23324":[{"start":3791,"length":32},{"start":13651,"length":32}],"23526":[{"start":5198,"length":32},{"start":9621,"length":32},{"start":12527,"length":32},{"start":20736,"length":32},{"start":23517,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InternalOnly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IntervalTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMaxMissed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NameTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotServiceOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashingOracle\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTangleCore\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorNotEligibleForRemoval\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorSlashed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorUnknown\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyDefinitions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyRegistered()\":[{\"notice\":\"Entity is already registered.\"}],\"InternalOnly()\":[{\"notice\":\"Function is restricted to internal (self) calls.\"}],\"IntervalTooShort()\":[{\"notice\":\"Heartbeat interval below the enforced minimum.\"}],\"InvalidBounds()\":[{\"notice\":\"minValue/maxValue bounds are inconsistent.\"}],\"InvalidMaxMissed()\":[{\"notice\":\"maxMissed must be at least 1.\"}],\"InvalidSignature()\":[{\"notice\":\"Recovered heartbeat signer does not match the caller.\"}],\"NameTooLong()\":[{\"notice\":\"Metric name exceeds the maximum allowed length.\"}],\"NotAuthorized()\":[{\"notice\":\"Caller is neither Tangle core nor the service owner.\"}],\"NotRegistered()\":[{\"notice\":\"Entity is not registered.\"}],\"NotRegisteredOperator()\":[{\"notice\":\"Caller is not a registered operator for the service.\"}],\"NotServiceOwner()\":[{\"notice\":\"Caller is not the service owner.\"}],\"NotSlashingOracle()\":[{\"notice\":\"Caller is not the configured slashing oracle.\"}],\"OnlyTangleCore()\":[{\"notice\":\"Caller is not the Tangle core contract.\"}],\"OperatorNotEligibleForRemoval()\":[{\"notice\":\"Operator does not meet removal eligibility criteria.\"}],\"OperatorSlashed()\":[{\"notice\":\"Operation not allowed while the operator is slashed.\"}],\"OperatorUnknown()\":[{\"notice\":\"Operator is not tracked for the service.\"}],\"TooManyDefinitions()\":[{\"notice\":\"Number of metric definitions exceeds the cap.\"}],\"ZeroAddress()\":[{\"notice\":\"Zero address supplied where a non-zero address is required.\"}]},\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":1},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0xac12dc963aa026a1836f86d43ae8312690c0879bfac3f1380d3254f78609c878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://245db676b001b01a04be7a0dd62a32e024230595b2be47dc6be1bc99c1a13ac7\",\"dweb:/ipfs/Qmah17E7VaBAG5xtVN2Xee3Pw6B8wr1xFeCBD6H3LAHb83\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyRegistered"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[],"type":"error","name":"InternalOnly"},{"inputs":[],"type":"error","name":"IntervalTooShort"},{"inputs":[],"type":"error","name":"InvalidBounds"},{"inputs":[],"type":"error","name":"InvalidMaxMissed"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"NameTooLong"},{"inputs":[],"type":"error","name":"NotAuthorized"},{"inputs":[],"type":"error","name":"NotRegistered"},{"inputs":[],"type":"error","name":"NotRegisteredOperator"},{"inputs":[],"type":"error","name":"NotServiceOwner"},{"inputs":[],"type":"error","name":"NotSlashingOracle"},{"inputs":[],"type":"error","name":"OnlyTangleCore"},{"inputs":[],"type":"error","name":"OperatorNotEligibleForRemoval"},{"inputs":[],"type":"error","name":"OperatorSlashed"},{"inputs":[],"type":"error","name":"OperatorUnknown"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"TooManyDefinitions"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":1},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0xac12dc963aa026a1836f86d43ae8312690c0879bfac3f1380d3254f78609c878","urls":["bzz-raw://245db676b001b01a04be7a0dd62a32e024230595b2be47dc6be1bc99c1a13ac7","dweb:/ipfs/Qmah17E7VaBAG5xtVN2Xee3Pw6B8wr1xFeCBD6H3LAHb83"],"license":"MIT"}},"version":1},"id":58} \ No newline at end of file diff --git a/bindings/src/bindings/i_tangle.rs b/bindings/src/bindings/i_tangle.rs index e5c482b8..0783e83d 100644 --- a/bindings/src/bindings/i_tangle.rs +++ b/bindings/src/bindings/i_tangle.rs @@ -11394,6 +11394,7 @@ interface ITangle { event BlueprintCreated(uint64 indexed blueprintId, address indexed owner, address manager, string metadataUri, bytes32 metadataHash); event BlueprintDeactivated(uint64 indexed blueprintId); event BlueprintResourceRequirementsSet(uint64 indexed blueprintId, uint256 count); + event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); event BlueprintSourcesAcked(uint64 indexed blueprintId, address indexed operator, bytes32 sourcesHash); event BlueprintTransferCancelled(uint64 indexed blueprintId, address indexed owner); event BlueprintTransferProposed(uint64 indexed blueprintId, address indexed from, address indexed pendingOwner); @@ -11454,6 +11455,7 @@ interface ITangle { function getBlueprintConfig(uint64 blueprintId) external view returns (Types.BlueprintConfig memory); function getBlueprintDefinition(uint64 blueprintId) external view returns (Types.BlueprintDefinition memory definition); function getBlueprintResourceRequirements(uint64 blueprintId) external view returns (Types.ResourceCommitment[] memory); + function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address); function getExitConfig(uint64 serviceId) external view returns (Types.ExitConfig memory); function getExitRequest(uint64 serviceId, address operator) external view returns (Types.ExitRequest memory); function getExitStatus(uint64 serviceId, address operator) external view returns (Types.ExitStatus); @@ -11502,6 +11504,7 @@ interface ITangle { function scheduleExit(uint64 serviceId) external; function serviceCount() external view returns (uint64); function setBlueprintResourceRequirements(uint64 blueprintId, Types.ResourceCommitment[] memory requirements) external; + function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external; function setBlueprintSources(uint64 blueprintId, Types.BlueprintSource[] memory sources) external; function setJobEventRates(uint64 blueprintId, uint8[] memory jobIndexes, uint256[] memory rates) external; function submitAggregatedResult(uint64 serviceId, uint64 callId, bytes memory output, uint256 signerBitmap, uint256[2] memory aggregatedSignature, uint256[4] memory aggregatedPubkey) external; @@ -13140,6 +13143,25 @@ interface ITangle { ], "stateMutability": "view" }, + { + "type": "function", + "name": "getBlueprintSettlementAsset", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getExitConfig", @@ -14727,6 +14749,24 @@ interface ITangle { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "setBlueprintSettlementAsset", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "asset", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "setBlueprintSources", @@ -15323,6 +15363,25 @@ interface ITangle { ], "anonymous": false }, + { + "type": "event", + "name": "BlueprintSettlementAssetSet", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "asset", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "BlueprintSourcesAcked", @@ -16441,6 +16500,128 @@ event BlueprintResourceRequirementsSet(uint64 indexed blueprintId, uint256 count }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `BlueprintSettlementAssetSet(uint64,address)` and selector `0xa4ea41b2777aa3b65b002e352a0fc2cd98e42e003e143bb3e9805d5375c47f89`. +```solidity +event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct BlueprintSettlementAssetSet { + #[allow(missing_docs)] + pub blueprintId: u64, + #[allow(missing_docs)] + pub asset: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BlueprintSettlementAssetSet { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BlueprintSettlementAssetSet(uint64,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 164u8, 234u8, 65u8, 178u8, 119u8, 122u8, 163u8, 182u8, 91u8, 0u8, 46u8, + 53u8, 42u8, 15u8, 194u8, 205u8, 152u8, 228u8, 46u8, 0u8, 62u8, 20u8, + 59u8, 179u8, 233u8, 128u8, 93u8, 83u8, 117u8, 196u8, 127u8, 137u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + blueprintId: topics.1, + asset: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.blueprintId.clone(), + self.asset.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.blueprintId); + out[2usize] = ::encode_topic( + &self.asset, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BlueprintSettlementAssetSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BlueprintSettlementAssetSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &BlueprintSettlementAssetSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Event with signature `BlueprintSourcesAcked(uint64,address,bytes32)` and selector `0xeea6987858321b10512b8727111031ec8fc574aa02aefff8a767f28eb826a59e`. ```solidity event BlueprintSourcesAcked(uint64 indexed blueprintId, address indexed operator, bytes32 sourcesHash); @@ -24982,9 +25163,175 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu #[derive(Clone)] pub struct getBlueprintResourceRequirementsReturn { #[allow(missing_docs)] - pub _0: alloy::sol_types::private::Vec< - ::RustType, - >, + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getBlueprintResourceRequirementsCall) -> Self { + (value.blueprintId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getBlueprintResourceRequirementsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { blueprintId: tuple.0 } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getBlueprintResourceRequirementsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getBlueprintResourceRequirementsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBlueprintResourceRequirementsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::Vec< + ::RustType, + >; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBlueprintResourceRequirements(uint64)"; + const SELECTOR: [u8; 4] = [52u8, 158u8, 150u8, 26u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blueprintId), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(ret), + ) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: getBlueprintResourceRequirementsReturn = r.into(); + r._0 + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: getBlueprintResourceRequirementsReturn = r.into(); + r._0 + }) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `getBlueprintSettlementAsset(uint64)` and selector `0xee09b0d8`. +```solidity +function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlueprintSettlementAssetCall { + #[allow(missing_docs)] + pub blueprintId: u64, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`getBlueprintSettlementAsset(uint64)`](getBlueprintSettlementAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlueprintSettlementAssetReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, } #[allow( non_camel_case_types, @@ -25013,16 +25360,16 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From + impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getBlueprintResourceRequirementsCall) -> Self { + fn from(value: getBlueprintSettlementAssetCall) -> Self { (value.blueprintId,) } } #[automatically_derived] #[doc(hidden)] impl ::core::convert::From> - for getBlueprintResourceRequirementsCall { + for getBlueprintSettlementAssetCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { blueprintId: tuple.0 } } @@ -25031,15 +25378,9 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu { #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Vec< - ::RustType, - >, - ); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -25053,38 +25394,34 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From + impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getBlueprintResourceRequirementsReturn) -> Self { + fn from(value: getBlueprintSettlementAssetReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] impl ::core::convert::From> - for getBlueprintResourceRequirementsReturn { + for getBlueprintSettlementAssetReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for getBlueprintResourceRequirementsCall { + impl alloy_sol_types::SolCall for getBlueprintSettlementAssetCall { type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = alloy::sol_types::private::Vec< - ::RustType, - >; - type ReturnTuple<'a> = ( - alloy::sol_types::sol_data::Array, - ); + type Return = alloy::sol_types::private::Address; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "getBlueprintResourceRequirements(uint64)"; - const SELECTOR: [u8; 4] = [52u8, 158u8, 150u8, 26u8]; + const SIGNATURE: &'static str = "getBlueprintSettlementAsset(uint64)"; + const SELECTOR: [u8; 4] = [238u8, 9u8, 176u8, 216u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -25102,9 +25439,9 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu #[inline] fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { ( - as alloy_sol_types::SolType>::tokenize(ret), + ::tokenize( + ret, + ), ) } #[inline] @@ -25113,7 +25450,7 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu '_, > as alloy_sol_types::SolType>::abi_decode_sequence(data) .map(|r| { - let r: getBlueprintResourceRequirementsReturn = r.into(); + let r: getBlueprintSettlementAssetReturn = r.into(); r._0 }) } @@ -25125,7 +25462,7 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu '_, > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) .map(|r| { - let r: getBlueprintResourceRequirementsReturn = r.into(); + let r: getBlueprintSettlementAssetReturn = r.into(); r._0 }) } @@ -33298,6 +33635,170 @@ function setBlueprintResourceRequirements(uint64 blueprintId, Types.ResourceComm } }; #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `setBlueprintSettlementAsset(uint64,address)` and selector `0x730b595f`. +```solidity +function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlueprintSettlementAssetCall { + #[allow(missing_docs)] + pub blueprintId: u64, + #[allow(missing_docs)] + pub asset: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setBlueprintSettlementAsset(uint64,address)`](setBlueprintSettlementAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlueprintSettlementAssetReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setBlueprintSettlementAssetCall) -> Self { + (value.blueprintId, value.asset) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setBlueprintSettlementAssetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blueprintId: tuple.0, + asset: tuple.1, + } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setBlueprintSettlementAssetReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setBlueprintSettlementAssetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + impl setBlueprintSettlementAssetReturn { + fn _tokenize( + &self, + ) -> ::ReturnToken< + '_, + > { + () + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setBlueprintSettlementAssetCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setBlueprintSettlementAssetReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setBlueprintSettlementAsset(uint64,address)"; + const SELECTOR: [u8; 4] = [115u8, 11u8, 89u8, 95u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blueprintId), + ::tokenize( + &self.asset, + ), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + setBlueprintSettlementAssetReturn::_tokenize(ret) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(Into::into) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Into::into) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] #[derive()] /**Function with signature `setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])` and selector `0x1d683faa`. ```solidity @@ -36069,6 +36570,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] getBlueprintResourceRequirements(getBlueprintResourceRequirementsCall), #[allow(missing_docs)] + getBlueprintSettlementAsset(getBlueprintSettlementAssetCall), + #[allow(missing_docs)] getExitConfig(getExitConfigCall), #[allow(missing_docs)] getExitRequest(getExitRequestCall), @@ -36165,6 +36668,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] setBlueprintResourceRequirements(setBlueprintResourceRequirementsCall), #[allow(missing_docs)] + setBlueprintSettlementAsset(setBlueprintSettlementAssetCall), + #[allow(missing_docs)] setBlueprintSources(setBlueprintSourcesCall), #[allow(missing_docs)] setJobEventRates(setJobEventRatesCall), @@ -36252,6 +36757,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; [109u8, 139u8, 136u8, 195u8], [110u8, 229u8, 188u8, 255u8], [114u8, 161u8, 247u8, 190u8], + [115u8, 11u8, 89u8, 95u8], [115u8, 36u8, 233u8, 22u8], [128u8, 172u8, 130u8, 40u8], [129u8, 93u8, 106u8, 38u8], @@ -36296,6 +36802,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; [229u8, 247u8, 151u8, 242u8], [232u8, 48u8, 191u8, 246u8], [235u8, 140u8, 59u8, 205u8], + [238u8, 9u8, 176u8, 216u8], [239u8, 92u8, 251u8, 140u8], [243u8, 47u8, 150u8, 115u8], [245u8, 171u8, 22u8, 204u8], @@ -36353,6 +36860,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(rejectService), ::core::stringify!(getOperatorBlsPubkey), ::core::stringify!(submitJobFromQuote), + ::core::stringify!(setBlueprintSettlementAsset), ::core::stringify!(registerOperator_0), ::core::stringify!(pendingRewards_1), ::core::stringify!(addPermittedCaller), @@ -36397,6 +36905,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(getServiceRequestSecurityRequirements), ::core::stringify!(setBlueprintResourceRequirements), ::core::stringify!(getServiceEscrow), + ::core::stringify!(getBlueprintSettlementAsset), ::core::stringify!(claimRewards_1), ::core::stringify!(getOperatorPreferences), ::core::stringify!(rewardTokens), @@ -36454,6 +36963,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -36498,6 +37008,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -36531,7 +37042,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; impl alloy_sol_types::SolInterface for ITangleCalls { const NAME: &'static str = "ITangleCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 98usize; + const COUNT: usize = 100usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -36637,6 +37148,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::getBlueprintResourceRequirements(_) => { ::SELECTOR } + Self::getBlueprintSettlementAsset(_) => { + ::SELECTOR + } Self::getExitConfig(_) => { ::SELECTOR } @@ -36781,6 +37295,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::setBlueprintResourceRequirements(_) => { ::SELECTOR } + Self::setBlueprintSettlementAsset(_) => { + ::SELECTOR + } Self::setBlueprintSources(_) => { ::SELECTOR } @@ -37357,6 +37874,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } submitJobFromQuote }, + { + fn setBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleCalls::setBlueprintSettlementAsset) + } + setBlueprintSettlementAsset + }, { fn registerOperator_0( data: &[u8], @@ -37833,6 +38361,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getServiceEscrow }, + { + fn getBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleCalls::getBlueprintSettlementAsset) + } + getBlueprintSettlementAsset + }, { fn claimRewards_1( data: &[u8], @@ -38443,6 +38982,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } submitJobFromQuote }, + { + fn setBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleCalls::setBlueprintSettlementAsset) + } + setBlueprintSettlementAsset + }, { fn registerOperator_0( data: &[u8], @@ -38921,6 +39471,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getServiceEscrow }, + { + fn getBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleCalls::getBlueprintSettlementAsset) + } + getBlueprintSettlementAsset + }, { fn claimRewards_1( data: &[u8], @@ -39178,6 +39739,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; inner, ) } + Self::getBlueprintSettlementAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getExitConfig(inner) => { ::abi_encoded_size( inner, @@ -39414,6 +39980,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; inner, ) } + Self::setBlueprintSettlementAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::setBlueprintSources(inner) => { ::abi_encoded_size( inner, @@ -39701,6 +40272,12 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; out, ) } + Self::getBlueprintSettlementAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getExitConfig(inner) => { ::abi_encode_raw( inner, @@ -39989,6 +40566,12 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; out, ) } + Self::setBlueprintSettlementAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::setBlueprintSources(inner) => { ::abi_encode_raw( inner, @@ -40100,6 +40683,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] BlueprintResourceRequirementsSet(BlueprintResourceRequirementsSet), #[allow(missing_docs)] + BlueprintSettlementAssetSet(BlueprintSettlementAssetSet), + #[allow(missing_docs)] BlueprintSourcesAcked(BlueprintSourcesAcked), #[allow(missing_docs)] BlueprintTransferCancelled(BlueprintTransferCancelled), @@ -40233,6 +40818,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; 66u8, 130u8, 234u8, 159u8, 82u8, 31u8, 5u8, 174u8, 64u8, 220u8, 8u8, 243u8, 6u8, 141u8, 250u8, 213u8, 40u8, 166u8, 94u8, 227u8, 199u8, ], + [ + 164u8, 234u8, 65u8, 178u8, 119u8, 122u8, 163u8, 182u8, 91u8, 0u8, 46u8, + 53u8, 42u8, 15u8, 194u8, 205u8, 152u8, 228u8, 46u8, 0u8, 62u8, 20u8, + 59u8, 179u8, 233u8, 128u8, 93u8, 83u8, 117u8, 196u8, 127u8, 137u8, + ], [ 176u8, 147u8, 125u8, 220u8, 140u8, 75u8, 117u8, 27u8, 250u8, 106u8, 69u8, 45u8, 118u8, 254u8, 7u8, 251u8, 222u8, 39u8, 95u8, 126u8, 169u8, 193u8, @@ -40316,6 +40906,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(JobResultSubmitted), ::core::stringify!(OperatorLeftService), ::core::stringify!(RewardsClaimed), + ::core::stringify!(BlueprintSettlementAssetSet), ::core::stringify!(BlueprintTransferCancelled), ::core::stringify!(JobSubmittedFromQuote), ::core::stringify!(OperatorPreferencesUpdated), @@ -40347,6 +40938,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -40385,7 +40977,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[automatically_derived] impl alloy_sol_types::SolEventInterface for ITangleEvents { const NAME: &'static str = "ITangleEvents"; - const COUNT: usize = 28usize; + const COUNT: usize = 29usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -40416,6 +41008,15 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ) .map(Self::BlueprintResourceRequirementsSet) } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::BlueprintSettlementAssetSet) + } Some( ::SIGNATURE_HASH, ) => { @@ -40652,6 +41253,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::BlueprintResourceRequirementsSet(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::BlueprintSettlementAssetSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::BlueprintSourcesAcked(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -40740,6 +41344,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::BlueprintResourceRequirementsSet(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::BlueprintSettlementAssetSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::BlueprintSourcesAcked(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -41336,6 +41943,17 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`getBlueprintSettlementAsset`] function. + pub fn getBlueprintSettlementAsset( + &self, + blueprintId: u64, + ) -> alloy_contract::SolCallBuilder<&P, getBlueprintSettlementAssetCall, N> { + self.call_builder( + &getBlueprintSettlementAssetCall { + blueprintId, + }, + ) + } ///Creates a new call builder for the [`getExitConfig`] function. pub fn getExitConfig( &self, @@ -41961,6 +42579,19 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`setBlueprintSettlementAsset`] function. + pub fn setBlueprintSettlementAsset( + &self, + blueprintId: u64, + asset: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder<&P, setBlueprintSettlementAssetCall, N> { + self.call_builder( + &setBlueprintSettlementAssetCall { + blueprintId, + asset, + }, + ) + } ///Creates a new call builder for the [`setBlueprintSources`] function. pub fn setBlueprintSources( &self, @@ -42214,6 +42845,12 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ) -> alloy_contract::Event<&P, BlueprintResourceRequirementsSet, N> { self.event_filter::() } + ///Creates a new event filter for the [`BlueprintSettlementAssetSet`] event. + pub fn BlueprintSettlementAssetSet_filter( + &self, + ) -> alloy_contract::Event<&P, BlueprintSettlementAssetSet, N> { + self.event_filter::() + } ///Creates a new event filter for the [`BlueprintSourcesAcked`] event. pub fn BlueprintSourcesAcked_filter( &self, diff --git a/bindings/src/bindings/i_tangle_blueprints.rs b/bindings/src/bindings/i_tangle_blueprints.rs index eb75fab8..e7a7ba83 100644 --- a/bindings/src/bindings/i_tangle_blueprints.rs +++ b/bindings/src/bindings/i_tangle_blueprints.rs @@ -4811,6 +4811,7 @@ interface ITangleBlueprints { event BlueprintCreated(uint64 indexed blueprintId, address indexed owner, address manager, string metadataUri, bytes32 metadataHash); event BlueprintDeactivated(uint64 indexed blueprintId); event BlueprintResourceRequirementsSet(uint64 indexed blueprintId, uint256 count); + event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); event BlueprintSourcesAcked(uint64 indexed blueprintId, address indexed operator, bytes32 sourcesHash); event BlueprintTransferCancelled(uint64 indexed blueprintId, address indexed owner); event BlueprintTransferProposed(uint64 indexed blueprintId, address indexed from, address indexed pendingOwner); @@ -4833,10 +4834,12 @@ interface ITangleBlueprints { function getBlueprintConfig(uint64 blueprintId) external view returns (Types.BlueprintConfig memory); function getBlueprintDefinition(uint64 blueprintId) external view returns (Types.BlueprintDefinition memory definition); function getBlueprintResourceRequirements(uint64 blueprintId) external view returns (Types.ResourceCommitment[] memory); + function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address); function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view returns (uint256 rate); function operatorAckedCurrentSources(uint64 blueprintId, address operator) external view returns (bool); function pendingBlueprintOwner(uint64 blueprintId) external view returns (address); function setBlueprintResourceRequirements(uint64 blueprintId, Types.ResourceCommitment[] memory requirements) external; + function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external; function setBlueprintSources(uint64 blueprintId, Types.BlueprintSource[] memory sources) external; function setJobEventRates(uint64 blueprintId, uint8[] memory jobIndexes, uint256[] memory rates) external; function transferBlueprint(uint64 blueprintId, address newOwner) external; @@ -5864,6 +5867,25 @@ interface ITangleBlueprints { ], "stateMutability": "view" }, + { + "type": "function", + "name": "getBlueprintSettlementAsset", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getJobEventRate", @@ -5961,6 +5983,24 @@ interface ITangleBlueprints { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "setBlueprintSettlementAsset", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "asset", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "setBlueprintSources", @@ -6239,6 +6279,25 @@ interface ITangleBlueprints { ], "anonymous": false }, + { + "type": "event", + "name": "BlueprintSettlementAssetSet", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "asset", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "BlueprintSourcesAcked", @@ -6761,6 +6820,128 @@ event BlueprintResourceRequirementsSet(uint64 indexed blueprintId, uint256 count }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `BlueprintSettlementAssetSet(uint64,address)` and selector `0xa4ea41b2777aa3b65b002e352a0fc2cd98e42e003e143bb3e9805d5375c47f89`. +```solidity +event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct BlueprintSettlementAssetSet { + #[allow(missing_docs)] + pub blueprintId: u64, + #[allow(missing_docs)] + pub asset: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BlueprintSettlementAssetSet { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BlueprintSettlementAssetSet(uint64,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 164u8, 234u8, 65u8, 178u8, 119u8, 122u8, 163u8, 182u8, 91u8, 0u8, 46u8, + 53u8, 42u8, 15u8, 194u8, 205u8, 152u8, 228u8, 46u8, 0u8, 62u8, 20u8, + 59u8, 179u8, 233u8, 128u8, 93u8, 83u8, 117u8, 196u8, 127u8, 137u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + blueprintId: topics.1, + asset: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.blueprintId.clone(), + self.asset.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.blueprintId); + out[2usize] = ::encode_topic( + &self.asset, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BlueprintSettlementAssetSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BlueprintSettlementAssetSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &BlueprintSettlementAssetSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Event with signature `BlueprintSourcesAcked(uint64,address,bytes32)` and selector `0xeea6987858321b10512b8727111031ec8fc574aa02aefff8a767f28eb826a59e`. ```solidity event BlueprintSourcesAcked(uint64 indexed blueprintId, address indexed operator, bytes32 sourcesHash); @@ -9916,26 +10097,24 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Function with signature `getJobEventRate(uint64,uint8)` and selector `0xf9333bb1`. + /**Function with signature `getBlueprintSettlementAsset(uint64)` and selector `0xee09b0d8`. ```solidity -function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view returns (uint256 rate); +function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getJobEventRateCall { + pub struct getBlueprintSettlementAssetCall { #[allow(missing_docs)] pub blueprintId: u64, - #[allow(missing_docs)] - pub jobIndex: u8, } #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - ///Container type for the return parameters of the [`getJobEventRate(uint64,uint8)`](getJobEventRateCall) function. + ///Container type for the return parameters of the [`getBlueprintSettlementAsset(uint64)`](getBlueprintSettlementAssetCall) function. #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct getJobEventRateReturn { + pub struct getBlueprintSettlementAssetReturn { #[allow(missing_docs)] - pub rate: alloy::sol_types::private::primitives::aliases::U256, + pub _0: alloy::sol_types::private::Address, } #[allow( non_camel_case_types, @@ -9948,12 +10127,9 @@ function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view retur { #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Uint<64>, - alloy::sol_types::sol_data::Uint<8>, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u64, u8); + type UnderlyingRustTuple<'a> = (u64,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -9967,30 +10143,27 @@ function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view retur } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getJobEventRateCall) -> Self { - (value.blueprintId, value.jobIndex) + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getBlueprintSettlementAssetCall) -> Self { + (value.blueprintId,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for getJobEventRateCall { + impl ::core::convert::From> + for getBlueprintSettlementAssetCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - blueprintId: tuple.0, - jobIndex: tuple.1, - } + Self { blueprintId: tuple.0 } } } } { #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::primitives::aliases::U256, - ); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -10004,37 +10177,34 @@ function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view retur } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From + impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: getJobEventRateReturn) -> Self { - (value.rate,) + fn from(value: getBlueprintSettlementAssetReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] impl ::core::convert::From> - for getJobEventRateReturn { + for getBlueprintSettlementAssetReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { rate: tuple.0 } + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for getJobEventRateCall { - type Parameters<'a> = ( - alloy::sol_types::sol_data::Uint<64>, - alloy::sol_types::sol_data::Uint<8>, - ); + impl alloy_sol_types::SolCall for getBlueprintSettlementAssetCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = alloy::sol_types::private::primitives::aliases::U256; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Return = alloy::sol_types::private::Address; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "getJobEventRate(uint64,uint8)"; - const SELECTOR: [u8; 4] = [249u8, 51u8, 59u8, 177u8]; + const SIGNATURE: &'static str = "getBlueprintSettlementAsset(uint64)"; + const SELECTOR: [u8; 4] = [238u8, 9u8, 176u8, 216u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -10047,17 +10217,14 @@ function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view retur as alloy_sol_types::SolType>::tokenize(&self.blueprintId), - as alloy_sol_types::SolType>::tokenize(&self.jobIndex), ) } #[inline] fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { ( - as alloy_sol_types::SolType>::tokenize(ret), + ::tokenize( + ret, + ), ) } #[inline] @@ -10066,8 +10233,8 @@ function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view retur '_, > as alloy_sol_types::SolType>::abi_decode_sequence(data) .map(|r| { - let r: getJobEventRateReturn = r.into(); - r.rate + let r: getBlueprintSettlementAssetReturn = r.into(); + r._0 }) } #[inline] @@ -10078,34 +10245,34 @@ function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view retur '_, > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) .map(|r| { - let r: getJobEventRateReturn = r.into(); - r.rate + let r: getBlueprintSettlementAssetReturn = r.into(); + r._0 }) } } }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Function with signature `operatorAckedCurrentSources(uint64,address)` and selector `0x2dd20a75`. + /**Function with signature `getJobEventRate(uint64,uint8)` and selector `0xf9333bb1`. ```solidity -function operatorAckedCurrentSources(uint64 blueprintId, address operator) external view returns (bool); +function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view returns (uint256 rate); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct operatorAckedCurrentSourcesCall { + pub struct getJobEventRateCall { #[allow(missing_docs)] pub blueprintId: u64, #[allow(missing_docs)] - pub operator: alloy::sol_types::private::Address, + pub jobIndex: u8, } #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - ///Container type for the return parameters of the [`operatorAckedCurrentSources(uint64,address)`](operatorAckedCurrentSourcesCall) function. + ///Container type for the return parameters of the [`getJobEventRate(uint64,uint8)`](getJobEventRateCall) function. #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct operatorAckedCurrentSourcesReturn { + pub struct getJobEventRateReturn { #[allow(missing_docs)] - pub _0: bool, + pub rate: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -10120,10 +10287,10 @@ function operatorAckedCurrentSources(uint64 blueprintId, address operator) exter #[allow(dead_code)] type UnderlyingSolTuple<'a> = ( alloy::sol_types::sol_data::Uint<64>, - alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<8>, ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u64, alloy::sol_types::private::Address); + type UnderlyingRustTuple<'a> = (u64, u8); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -10137,20 +10304,190 @@ function operatorAckedCurrentSources(uint64 blueprintId, address operator) exter } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From - for UnderlyingRustTuple<'_> { - fn from(value: operatorAckedCurrentSourcesCall) -> Self { - (value.blueprintId, value.operator) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getJobEventRateCall) -> Self { + (value.blueprintId, value.jobIndex) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> - for operatorAckedCurrentSourcesCall { + impl ::core::convert::From> for getJobEventRateCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { blueprintId: tuple.0, - operator: tuple.1, + jobIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getJobEventRateReturn) -> Self { + (value.rate,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getJobEventRateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { rate: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getJobEventRateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::primitives::aliases::U256; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getJobEventRate(uint64,uint8)"; + const SELECTOR: [u8; 4] = [249u8, 51u8, 59u8, 177u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blueprintId), + as alloy_sol_types::SolType>::tokenize(&self.jobIndex), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(ret), + ) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: getJobEventRateReturn = r.into(); + r.rate + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: getJobEventRateReturn = r.into(); + r.rate + }) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `operatorAckedCurrentSources(uint64,address)` and selector `0x2dd20a75`. +```solidity +function operatorAckedCurrentSources(uint64 blueprintId, address operator) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorAckedCurrentSourcesCall { + #[allow(missing_docs)] + pub blueprintId: u64, + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`operatorAckedCurrentSources(uint64,address)`](operatorAckedCurrentSourcesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct operatorAckedCurrentSourcesReturn { + #[allow(missing_docs)] + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: operatorAckedCurrentSourcesCall) -> Self { + (value.blueprintId, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for operatorAckedCurrentSourcesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blueprintId: tuple.0, + operator: tuple.1, } } } @@ -10582,6 +10919,170 @@ function setBlueprintResourceRequirements(uint64 blueprintId, Types.ResourceComm } }; #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `setBlueprintSettlementAsset(uint64,address)` and selector `0x730b595f`. +```solidity +function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlueprintSettlementAssetCall { + #[allow(missing_docs)] + pub blueprintId: u64, + #[allow(missing_docs)] + pub asset: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setBlueprintSettlementAsset(uint64,address)`](setBlueprintSettlementAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlueprintSettlementAssetReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setBlueprintSettlementAssetCall) -> Self { + (value.blueprintId, value.asset) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setBlueprintSettlementAssetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blueprintId: tuple.0, + asset: tuple.1, + } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setBlueprintSettlementAssetReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setBlueprintSettlementAssetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + impl setBlueprintSettlementAssetReturn { + fn _tokenize( + &self, + ) -> ::ReturnToken< + '_, + > { + () + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setBlueprintSettlementAssetCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setBlueprintSettlementAssetReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setBlueprintSettlementAsset(uint64,address)"; + const SELECTOR: [u8; 4] = [115u8, 11u8, 89u8, 95u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blueprintId), + ::tokenize( + &self.asset, + ), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + setBlueprintSettlementAssetReturn::_tokenize(ret) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(Into::into) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Into::into) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] #[derive()] /**Function with signature `setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])` and selector `0x1d683faa`. ```solidity @@ -11300,6 +11801,8 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 #[allow(missing_docs)] getBlueprintResourceRequirements(getBlueprintResourceRequirementsCall), #[allow(missing_docs)] + getBlueprintSettlementAsset(getBlueprintSettlementAssetCall), + #[allow(missing_docs)] getJobEventRate(getJobEventRateCall), #[allow(missing_docs)] operatorAckedCurrentSources(operatorAckedCurrentSourcesCall), @@ -11308,6 +11811,8 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 #[allow(missing_docs)] setBlueprintResourceRequirements(setBlueprintResourceRequirementsCall), #[allow(missing_docs)] + setBlueprintSettlementAsset(setBlueprintSettlementAssetCall), + #[allow(missing_docs)] setBlueprintSources(setBlueprintSourcesCall), #[allow(missing_docs)] setJobEventRates(setJobEventRatesCall), @@ -11336,6 +11841,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 [68u8, 155u8, 184u8, 73u8], [86u8, 58u8, 137u8, 249u8], [97u8, 113u8, 254u8, 168u8], + [115u8, 11u8, 89u8, 95u8], [138u8, 76u8, 247u8, 99u8], [141u8, 63u8, 101u8, 190u8], [143u8, 120u8, 178u8, 86u8], @@ -11346,6 +11852,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 [199u8, 183u8, 86u8, 28u8], [223u8, 87u8, 245u8, 39u8], [232u8, 48u8, 191u8, 246u8], + [238u8, 9u8, 176u8, 216u8], [249u8, 51u8, 59u8, 177u8], [255u8, 20u8, 169u8, 64u8], ]; @@ -11363,6 +11870,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 ::core::stringify!(deactivateBlueprint), ::core::stringify!(getBlueprintConfig), ::core::stringify!(getBlueprintDefinition), + ::core::stringify!(setBlueprintSettlementAsset), ::core::stringify!(transferBlueprint), ::core::stringify!(blueprintOperatorCount), ::core::stringify!(blueprintSourcesHash), @@ -11373,6 +11881,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 ::core::stringify!(acceptBlueprintOwnership), ::core::stringify!(blueprintSupportedMemberships), ::core::stringify!(setBlueprintResourceRequirements), + ::core::stringify!(getBlueprintSettlementAsset), ::core::stringify!(getJobEventRate), ::core::stringify!(blueprintMasterRevision), ]; @@ -11390,6 +11899,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -11400,6 +11910,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ]; @@ -11428,7 +11939,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 impl alloy_sol_types::SolInterface for ITangleBlueprintsCalls { const NAME: &'static str = "ITangleBlueprintsCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 24usize; + const COUNT: usize = 26usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -11480,6 +11991,9 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 Self::getBlueprintResourceRequirements(_) => { ::SELECTOR } + Self::getBlueprintSettlementAsset(_) => { + ::SELECTOR + } Self::getJobEventRate(_) => { ::SELECTOR } @@ -11492,6 +12006,9 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 Self::setBlueprintResourceRequirements(_) => { ::SELECTOR } + Self::setBlueprintSettlementAsset(_) => { + ::SELECTOR + } Self::setBlueprintSources(_) => { ::SELECTOR } @@ -11657,6 +12174,17 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 } getBlueprintDefinition }, + { + fn setBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleBlueprintsCalls::setBlueprintSettlementAsset) + } + setBlueprintSettlementAsset + }, { fn transferBlueprint( data: &[u8], @@ -11769,6 +12297,17 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 } setBlueprintResourceRequirements }, + { + fn getBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleBlueprintsCalls::getBlueprintSettlementAsset) + } + getBlueprintSettlementAsset + }, { fn getJobEventRate( data: &[u8], @@ -11945,6 +12484,17 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 } getBlueprintDefinition }, + { + fn setBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleBlueprintsCalls::setBlueprintSettlementAsset) + } + setBlueprintSettlementAsset + }, { fn transferBlueprint( data: &[u8], @@ -12057,6 +12607,17 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 } setBlueprintResourceRequirements }, + { + fn getBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleBlueprintsCalls::getBlueprintSettlementAsset) + } + getBlueprintSettlementAsset + }, { fn getJobEventRate( data: &[u8], @@ -12173,6 +12734,11 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 inner, ) } + Self::getBlueprintSettlementAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getJobEventRate(inner) => { ::abi_encoded_size( inner, @@ -12193,6 +12759,11 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 inner, ) } + Self::setBlueprintSettlementAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::setBlueprintSources(inner) => { ::abi_encoded_size( inner, @@ -12314,6 +12885,12 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 out, ) } + Self::getBlueprintSettlementAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getJobEventRate(inner) => { ::abi_encode_raw( inner, @@ -12338,6 +12915,12 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 out, ) } + Self::setBlueprintSettlementAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::setBlueprintSources(inner) => { ::abi_encode_raw( inner, @@ -12377,6 +12960,8 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 #[allow(missing_docs)] BlueprintResourceRequirementsSet(BlueprintResourceRequirementsSet), #[allow(missing_docs)] + BlueprintSettlementAssetSet(BlueprintSettlementAssetSet), + #[allow(missing_docs)] BlueprintSourcesAcked(BlueprintSourcesAcked), #[allow(missing_docs)] BlueprintTransferCancelled(BlueprintTransferCancelled), @@ -12410,6 +12995,11 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 98u8, 70u8, 155u8, 1u8, 127u8, 253u8, 8u8, 120u8, 68u8, 8u8, 197u8, 144u8, 133u8, 118u8, 119u8, 116u8, 8u8, 150u8, 12u8, 12u8, 202u8, ], + [ + 164u8, 234u8, 65u8, 178u8, 119u8, 122u8, 163u8, 182u8, 91u8, 0u8, 46u8, + 53u8, 42u8, 15u8, 194u8, 205u8, 152u8, 228u8, 46u8, 0u8, 62u8, 20u8, + 59u8, 179u8, 233u8, 128u8, 93u8, 83u8, 117u8, 196u8, 127u8, 137u8, + ], [ 176u8, 147u8, 125u8, 220u8, 140u8, 75u8, 117u8, 27u8, 250u8, 106u8, 69u8, 45u8, 118u8, 254u8, 7u8, 251u8, 222u8, 39u8, 95u8, 126u8, 169u8, 193u8, @@ -12441,6 +13031,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 ::core::stringify!(BlueprintUpdated), ::core::stringify!(BlueprintCreated), ::core::stringify!(BlueprintResourceRequirementsSet), + ::core::stringify!(BlueprintSettlementAssetSet), ::core::stringify!(BlueprintTransferCancelled), ::core::stringify!(BlueprintTransferred), ::core::stringify!(BlueprintTransferProposed), @@ -12452,6 +13043,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -12482,7 +13074,7 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 #[automatically_derived] impl alloy_sol_types::SolEventInterface for ITangleBlueprintsEvents { const NAME: &'static str = "ITangleBlueprintsEvents"; - const COUNT: usize = 8usize; + const COUNT: usize = 9usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -12513,6 +13105,15 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 ) .map(Self::BlueprintResourceRequirementsSet) } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::BlueprintSettlementAssetSet) + } Some( ::SIGNATURE_HASH, ) => { @@ -12583,6 +13184,9 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 Self::BlueprintResourceRequirementsSet(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::BlueprintSettlementAssetSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::BlueprintSourcesAcked(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -12611,6 +13215,9 @@ function updateBlueprint(uint64 blueprintId, string memory metadataUri, bytes32 Self::BlueprintResourceRequirementsSet(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::BlueprintSettlementAssetSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::BlueprintSourcesAcked(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -12955,6 +13562,17 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`getBlueprintSettlementAsset`] function. + pub fn getBlueprintSettlementAsset( + &self, + blueprintId: u64, + ) -> alloy_contract::SolCallBuilder<&P, getBlueprintSettlementAssetCall, N> { + self.call_builder( + &getBlueprintSettlementAssetCall { + blueprintId, + }, + ) + } ///Creates a new call builder for the [`getJobEventRate`] function. pub fn getJobEventRate( &self, @@ -13011,6 +13629,19 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`setBlueprintSettlementAsset`] function. + pub fn setBlueprintSettlementAsset( + &self, + blueprintId: u64, + asset: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder<&P, setBlueprintSettlementAssetCall, N> { + self.call_builder( + &setBlueprintSettlementAssetCall { + blueprintId, + asset, + }, + ) + } ///Creates a new call builder for the [`setBlueprintSources`] function. pub fn setBlueprintSources( &self, @@ -13104,6 +13735,12 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ) -> alloy_contract::Event<&P, BlueprintResourceRequirementsSet, N> { self.event_filter::() } + ///Creates a new event filter for the [`BlueprintSettlementAssetSet`] event. + pub fn BlueprintSettlementAssetSet_filter( + &self, + ) -> alloy_contract::Event<&P, BlueprintSettlementAssetSet, N> { + self.event_filter::() + } ///Creates a new event filter for the [`BlueprintSourcesAcked`] event. pub fn BlueprintSourcesAcked_filter( &self, diff --git a/bindings/src/bindings/i_tangle_full.rs b/bindings/src/bindings/i_tangle_full.rs index 077166a3..442ab9ce 100644 --- a/bindings/src/bindings/i_tangle_full.rs +++ b/bindings/src/bindings/i_tangle_full.rs @@ -12769,6 +12769,7 @@ interface ITangleFull { event BlueprintCreated(uint64 indexed blueprintId, address indexed owner, address manager, string metadataUri, bytes32 metadataHash); event BlueprintDeactivated(uint64 indexed blueprintId); event BlueprintResourceRequirementsSet(uint64 indexed blueprintId, uint256 count); + event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); event BlueprintSourcesAcked(uint64 indexed blueprintId, address indexed operator, bytes32 sourcesHash); event BlueprintTransferCancelled(uint64 indexed blueprintId, address indexed owner); event BlueprintTransferProposed(uint64 indexed blueprintId, address indexed from, address indexed pendingOwner); @@ -12840,6 +12841,7 @@ interface ITangleFull { function getBlueprintConfig(uint64 blueprintId) external view returns (Types.BlueprintConfig memory); function getBlueprintDefinition(uint64 blueprintId) external view returns (Types.BlueprintDefinition memory definition); function getBlueprintResourceRequirements(uint64 blueprintId) external view returns (Types.ResourceCommitment[] memory); + function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address); function getExecutableSlashes(uint64 fromId, uint64 toId) external view returns (uint64[] memory ids); function getExitConfig(uint64 serviceId) external view returns (Types.ExitConfig memory); function getExitRequest(uint64 serviceId, address operator) external view returns (Types.ExitRequest memory); @@ -12903,6 +12905,7 @@ interface ITangleFull { function serviceCount() external view returns (uint64); function serviceFeeDistributor() external view returns (address); function setBlueprintResourceRequirements(uint64 blueprintId, Types.ResourceCommitment[] memory requirements) external; + function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external; function setBlueprintSources(uint64 blueprintId, Types.BlueprintSource[] memory sources) external; function setDefaultTntMinExposureBps(uint16 minExposureBps) external; function setJobEventRates(uint64 blueprintId, uint8[] memory jobIndexes, uint256[] memory rates) external; @@ -14659,6 +14662,25 @@ interface ITangleFull { ], "stateMutability": "view" }, + { + "type": "function", + "name": "getBlueprintSettlementAsset", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getExecutableSlashes", @@ -16588,6 +16610,24 @@ interface ITangleFull { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "setBlueprintSettlementAsset", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "asset", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "setBlueprintSources", @@ -17477,6 +17517,25 @@ interface ITangleFull { ], "anonymous": false }, + { + "type": "event", + "name": "BlueprintSettlementAssetSet", + "inputs": [ + { + "name": "blueprintId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "asset", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "BlueprintSourcesAcked", @@ -18774,6 +18833,128 @@ event BlueprintResourceRequirementsSet(uint64 indexed blueprintId, uint256 count }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `BlueprintSettlementAssetSet(uint64,address)` and selector `0xa4ea41b2777aa3b65b002e352a0fc2cd98e42e003e143bb3e9805d5375c47f89`. +```solidity +event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct BlueprintSettlementAssetSet { + #[allow(missing_docs)] + pub blueprintId: u64, + #[allow(missing_docs)] + pub asset: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BlueprintSettlementAssetSet { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BlueprintSettlementAssetSet(uint64,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 164u8, 234u8, 65u8, 178u8, 119u8, 122u8, 163u8, 182u8, 91u8, 0u8, 46u8, + 53u8, 42u8, 15u8, 194u8, 205u8, 152u8, 228u8, 46u8, 0u8, 62u8, 20u8, + 59u8, 179u8, 233u8, 128u8, 93u8, 83u8, 117u8, 196u8, 127u8, 137u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + blueprintId: topics.1, + asset: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.blueprintId.clone(), + self.asset.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.blueprintId); + out[2usize] = ::encode_topic( + &self.asset, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BlueprintSettlementAssetSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BlueprintSettlementAssetSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &BlueprintSettlementAssetSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Event with signature `BlueprintSourcesAcked(uint64,address,bytes32)` and selector `0xeea6987858321b10512b8727111031ec8fc574aa02aefff8a767f28eb826a59e`. ```solidity event BlueprintSourcesAcked(uint64 indexed blueprintId, address indexed operator, bytes32 sourcesHash); @@ -29106,6 +29287,162 @@ function getBlueprintResourceRequirements(uint64 blueprintId) external view retu }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `getBlueprintSettlementAsset(uint64)` and selector `0xee09b0d8`. +```solidity +function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlueprintSettlementAssetCall { + #[allow(missing_docs)] + pub blueprintId: u64, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`getBlueprintSettlementAsset(uint64)`](getBlueprintSettlementAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBlueprintSettlementAssetReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getBlueprintSettlementAssetCall) -> Self { + (value.blueprintId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getBlueprintSettlementAssetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { blueprintId: tuple.0 } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getBlueprintSettlementAssetReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getBlueprintSettlementAssetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBlueprintSettlementAssetCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::Address; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBlueprintSettlementAsset(uint64)"; + const SELECTOR: [u8; 4] = [238u8, 9u8, 176u8, 216u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blueprintId), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + ( + ::tokenize( + ret, + ), + ) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: getBlueprintSettlementAssetReturn = r.into(); + r._0 + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: getBlueprintSettlementAssetReturn = r.into(); + r._0 + }) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Function with signature `getExecutableSlashes(uint64,uint64)` and selector `0x110f829b`. ```solidity function getExecutableSlashes(uint64 fromId, uint64 toId) external view returns (uint64[] memory ids); @@ -39600,6 +39937,170 @@ function setBlueprintResourceRequirements(uint64 blueprintId, Types.ResourceComm } }; #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `setBlueprintSettlementAsset(uint64,address)` and selector `0x730b595f`. +```solidity +function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlueprintSettlementAssetCall { + #[allow(missing_docs)] + pub blueprintId: u64, + #[allow(missing_docs)] + pub asset: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setBlueprintSettlementAsset(uint64,address)`](setBlueprintSettlementAssetCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setBlueprintSettlementAssetReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setBlueprintSettlementAssetCall) -> Self { + (value.blueprintId, value.asset) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setBlueprintSettlementAssetCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blueprintId: tuple.0, + asset: tuple.1, + } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setBlueprintSettlementAssetReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setBlueprintSettlementAssetReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + impl setBlueprintSettlementAssetReturn { + fn _tokenize( + &self, + ) -> ::ReturnToken< + '_, + > { + () + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setBlueprintSettlementAssetCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setBlueprintSettlementAssetReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setBlueprintSettlementAsset(uint64,address)"; + const SELECTOR: [u8; 4] = [115u8, 11u8, 89u8, 95u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blueprintId), + ::tokenize( + &self.asset, + ), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + setBlueprintSettlementAssetReturn::_tokenize(ret) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(Into::into) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Into::into) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] #[derive()] /**Function with signature `setBlueprintSources(uint64,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[])` and selector `0x1d683faa`. ```solidity @@ -45237,6 +45738,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] getBlueprintResourceRequirements(getBlueprintResourceRequirementsCall), #[allow(missing_docs)] + getBlueprintSettlementAsset(getBlueprintSettlementAssetCall), + #[allow(missing_docs)] getExecutableSlashes(getExecutableSlashesCall), #[allow(missing_docs)] getExitConfig(getExitConfigCall), @@ -45363,6 +45866,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] setBlueprintResourceRequirements(setBlueprintResourceRequirementsCall), #[allow(missing_docs)] + setBlueprintSettlementAsset(setBlueprintSettlementAssetCall), + #[allow(missing_docs)] setBlueprintSources(setBlueprintSourcesCall), #[allow(missing_docs)] setDefaultTntMinExposureBps(setDefaultTntMinExposureBpsCall), @@ -45507,6 +46012,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; [110u8, 229u8, 188u8, 255u8], [114u8, 21u8, 93u8, 80u8], [114u8, 161u8, 247u8, 190u8], + [115u8, 11u8, 89u8, 95u8], [115u8, 36u8, 233u8, 22u8], [119u8, 56u8, 12u8, 116u8], [120u8, 214u8, 107u8, 227u8], @@ -45569,6 +46075,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; [232u8, 48u8, 191u8, 246u8], [234u8, 209u8, 223u8, 23u8], [235u8, 140u8, 59u8, 205u8], + [238u8, 9u8, 176u8, 216u8], [239u8, 27u8, 66u8, 162u8], [239u8, 92u8, 251u8, 140u8], [240u8, 244u8, 66u8, 96u8], @@ -45648,6 +46155,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(getOperatorBlsPubkey), ::core::stringify!(setSlashConfig), ::core::stringify!(submitJobFromQuote), + ::core::stringify!(setBlueprintSettlementAsset), ::core::stringify!(registerOperator_0), ::core::stringify!(disputeSlash), ::core::stringify!(setDefaultTntMinExposureBps), @@ -45710,6 +46218,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(setBlueprintResourceRequirements), ::core::stringify!(claimDisputeBond), ::core::stringify!(getServiceEscrow), + ::core::stringify!(getBlueprintSettlementAsset), ::core::stringify!(getSlashProposal), ::core::stringify!(claimRewards_1), ::core::stringify!(setTreasury), @@ -45789,6 +46298,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -45851,6 +46361,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -45887,7 +46398,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; impl alloy_sol_types::SolInterface for ITangleFullCalls { const NAME: &'static str = "ITangleFullCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 138usize; + const COUNT: usize = 140usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -46011,6 +46522,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::getBlueprintResourceRequirements(_) => { ::SELECTOR } + Self::getBlueprintSettlementAsset(_) => { + ::SELECTOR + } Self::getExecutableSlashes(_) => { ::SELECTOR } @@ -46198,6 +46712,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::setBlueprintResourceRequirements(_) => { ::SELECTOR } + Self::setBlueprintSettlementAsset(_) => { + ::SELECTOR + } Self::setBlueprintSources(_) => { ::SELECTOR } @@ -47036,6 +47553,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } submitJobFromQuote }, + { + fn setBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleFullCalls::setBlueprintSettlementAsset) + } + setBlueprintSettlementAsset + }, { fn registerOperator_0( data: &[u8], @@ -47710,6 +48238,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getServiceEscrow }, + { + fn getBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(ITangleFullCalls::getBlueprintSettlementAsset) + } + getBlueprintSettlementAsset + }, { fn getSlashProposal( data: &[u8], @@ -48566,6 +49105,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } submitJobFromQuote }, + { + fn setBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleFullCalls::setBlueprintSettlementAsset) + } + setBlueprintSettlementAsset + }, { fn registerOperator_0( data: &[u8], @@ -49246,6 +49796,17 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; } getServiceEscrow }, + { + fn getBlueprintSettlementAsset( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(ITangleFullCalls::getBlueprintSettlementAsset) + } + getBlueprintSettlementAsset + }, { fn getSlashProposal( data: &[u8], @@ -49566,6 +50127,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; inner, ) } + Self::getBlueprintSettlementAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getExecutableSlashes(inner) => { ::abi_encoded_size( inner, @@ -49875,6 +50441,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; inner, ) } + Self::setBlueprintSettlementAsset(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::setBlueprintSources(inner) => { ::abi_encoded_size( inner, @@ -50285,6 +50856,12 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; out, ) } + Self::getBlueprintSettlementAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getExecutableSlashes(inner) => { ::abi_encode_raw( inner, @@ -50660,6 +51237,12 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; out, ) } + Self::setBlueprintSettlementAsset(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::setBlueprintSources(inner) => { ::abi_encode_raw( inner, @@ -50882,6 +51465,8 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[allow(missing_docs)] BlueprintResourceRequirementsSet(BlueprintResourceRequirementsSet), #[allow(missing_docs)] + BlueprintSettlementAssetSet(BlueprintSettlementAssetSet), + #[allow(missing_docs)] BlueprintSourcesAcked(BlueprintSourcesAcked), #[allow(missing_docs)] BlueprintTransferCancelled(BlueprintTransferCancelled), @@ -51040,6 +51625,11 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; 66u8, 130u8, 234u8, 159u8, 82u8, 31u8, 5u8, 174u8, 64u8, 220u8, 8u8, 243u8, 6u8, 141u8, 250u8, 213u8, 40u8, 166u8, 94u8, 227u8, 199u8, ], + [ + 164u8, 234u8, 65u8, 178u8, 119u8, 122u8, 163u8, 182u8, 91u8, 0u8, 46u8, + 53u8, 42u8, 15u8, 194u8, 205u8, 152u8, 228u8, 46u8, 0u8, 62u8, 20u8, + 59u8, 179u8, 233u8, 128u8, 93u8, 83u8, 117u8, 196u8, 127u8, 137u8, + ], [ 176u8, 147u8, 125u8, 220u8, 140u8, 75u8, 117u8, 27u8, 250u8, 106u8, 69u8, 45u8, 118u8, 254u8, 7u8, 251u8, 222u8, 39u8, 95u8, 126u8, 169u8, 193u8, @@ -51136,6 +51726,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::core::stringify!(JobResultSubmitted), ::core::stringify!(OperatorLeftService), ::core::stringify!(RewardsClaimed), + ::core::stringify!(BlueprintSettlementAssetSet), ::core::stringify!(BlueprintTransferCancelled), ::core::stringify!(JobSubmittedFromQuote), ::core::stringify!(OperatorPreferencesUpdated), @@ -51172,6 +51763,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -51212,7 +51804,7 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; #[automatically_derived] impl alloy_sol_types::SolEventInterface for ITangleFullEvents { const NAME: &'static str = "ITangleFullEvents"; - const COUNT: usize = 33usize; + const COUNT: usize = 34usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -51243,6 +51835,15 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; ) .map(Self::BlueprintResourceRequirementsSet) } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::BlueprintSettlementAssetSet) + } Some( ::SIGNATURE_HASH, ) => { @@ -51516,6 +52117,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::BlueprintResourceRequirementsSet(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::BlueprintSettlementAssetSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::BlueprintSourcesAcked(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -51619,6 +52223,9 @@ function withdrawRemainingEscrowTo(uint64 serviceId, address to) external; Self::BlueprintResourceRequirementsSet(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::BlueprintSettlementAssetSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::BlueprintSourcesAcked(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -52277,6 +52884,17 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`getBlueprintSettlementAsset`] function. + pub fn getBlueprintSettlementAsset( + &self, + blueprintId: u64, + ) -> alloy_contract::SolCallBuilder<&P, getBlueprintSettlementAssetCall, N> { + self.call_builder( + &getBlueprintSettlementAssetCall { + blueprintId, + }, + ) + } ///Creates a new call builder for the [`getExecutableSlashes`] function. pub fn getExecutableSlashes( &self, @@ -53014,6 +53632,19 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ }, ) } + ///Creates a new call builder for the [`setBlueprintSettlementAsset`] function. + pub fn setBlueprintSettlementAsset( + &self, + blueprintId: u64, + asset: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder<&P, setBlueprintSettlementAssetCall, N> { + self.call_builder( + &setBlueprintSettlementAssetCall { + blueprintId, + asset, + }, + ) + } ///Creates a new call builder for the [`setBlueprintSources`] function. pub fn setBlueprintSources( &self, @@ -53428,6 +54059,12 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ) -> alloy_contract::Event<&P, BlueprintResourceRequirementsSet, N> { self.event_filter::() } + ///Creates a new event filter for the [`BlueprintSettlementAssetSet`] event. + pub fn BlueprintSettlementAssetSet_filter( + &self, + ) -> alloy_contract::Event<&P, BlueprintSettlementAssetSet, N> { + self.event_filter::() + } ///Creates a new event filter for the [`BlueprintSourcesAcked`] event. pub fn BlueprintSourcesAcked_filter( &self, diff --git a/src/TangleStorage.sol b/src/TangleStorage.sol index 4802a35e..bb68a5e3 100644 --- a/src/TangleStorage.sol +++ b/src/TangleStorage.sol @@ -545,28 +545,44 @@ abstract contract TangleStorage { // EVENT-DRIVEN SETTLEMENT ASSET (appended 2026-07-08) // ═══════════════════════════════════════════════════════════════════════════ // Appended after `_managerHookGasLimit` (never inserted mid layout); the reserved - // gap below is shrunk by one to preserve total storage size for upgrade safety. + // gap below is shrunk by two to preserve total storage size for upgrade safety. /// @notice Service ID => EventDriven settlement asset. `address(0)` = native. - /// @dev Pinned once at activation from the approved request's `paymentToken` - /// (`TangleServicesFacet._handleInitialPayments`). Read by the per-job - /// collection/distribution paths (`JobsSubmission._collectJobPaymentIfNeeded`, - /// the Jobs/RFQ distribute overrides) so per-job billing settles in the - /// currency the customer selected at request time — native OR a - /// manager-allowed ERC20 (e.g. Tempo PathUSD) — instead of a native-only - /// hardcode. Only written for EventDriven services; other pricing models - /// leave it at the `address(0)` default, which is also the correct native - /// sentinel, so a stale read can never misroute a non-EventDriven payment. + /// @dev Pinned once at activation from the SERVICE's BLUEPRINT settlement asset + /// (`_blueprintSettlementAsset[blueprintId]`, set by the blueprint owner), NOT + /// from the customer's request — see `TangleServicesFacet._handleInitialPayments`. + /// Read by the per-job collection/distribution paths + /// (`JobsSubmission._collectJobPaymentIfNeeded`, the Jobs/RFQ distribute + /// overrides) so per-job billing settles in the currency the blueprint DEVELOPER + /// declared — native OR a manager-allowed ERC20 (e.g. Tempo PathUSD) — instead of + /// a native-only hardcode. Pinning per-service is deliberate: a later change to the + /// blueprint's asset must NOT re-price services that are already live. Only written + /// for EventDriven services; other pricing models leave it at the `address(0)` + /// default, which is also the correct native sentinel, so a stale read can never + /// misroute a non-EventDriven payment. mapping(uint64 => address) internal _serviceEventDrivenAsset; + /// @notice Blueprint ID => EventDriven settlement asset the developer declares for the + /// blueprint's services. `address(0)` = native (the default and the sentinel). + /// @dev Set by the blueprint owner via `setBlueprintSettlementAsset`; the SAME party that + /// sets the per-job rate (`setJobEventRates`) chooses the settlement asset, so the + /// rate's units always match the asset's decimals. Read once at activation to pin + /// `_serviceEventDrivenAsset[serviceId]`. The customer CANNOT choose the settlement + /// asset at request time (an EventDriven request must pass native `address(0)`); this + /// is what makes the 10^12x under-payment exploit — a 6-dec rate driven to settle in + /// native — structurally impossible: there is no path to a service whose settlement + /// asset differs from its blueprint's declared asset. + mapping(uint64 => address) internal _blueprintSettlementAsset; + // ═══════════════════════════════════════════════════════════════════════════ // RESERVED STORAGE GAP // ═══════════════════════════════════════════════════════════════════════════ - /// @dev Reserved storage slots for future appends. __gap size 26, occupying slots - /// 92..117 (the sequential layout ends at _serviceEventDrivenAsset in slot 91 — + /// @dev Reserved storage slots for future appends. __gap size 25, occupying slots + /// 92..116 (the sequential layout ends at _blueprintSettlementAsset in slot 91 — /// verify with `forge inspect Tangle storage-layout`; the tail slots are pinned - /// by StorageLayoutSnapshotTest). Appending a field consumes gap slots - /// one-for-one: shrink this array by the field's slot count in the same change. - uint256[26] private __gap; + /// by StorageLayoutSnapshotTest, which fixes _managerHookGasLimit at slot 89, so the + /// two appended asset mappings sit at slots 90 and 91). Appending a field consumes gap + /// slots one-for-one: shrink this array by the field's slot count in the same change. + uint256[25] private __gap; } diff --git a/src/core/BlueprintsManage.sol b/src/core/BlueprintsManage.sol index d73adf58..da15134c 100644 --- a/src/core/BlueprintsManage.sol +++ b/src/core/BlueprintsManage.sol @@ -21,6 +21,7 @@ abstract contract BlueprintsManage is Base { event BlueprintTransferred(uint64 indexed blueprintId, address indexed from, address indexed to); event BlueprintDeactivated(uint64 indexed blueprintId); event JobEventRateSet(uint64 indexed blueprintId, uint8 indexed jobIndex, uint256 rate); + event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); event BlueprintResourceRequirementsSet(uint64 indexed blueprintId, uint256 count); event BlueprintSourcesAcked(uint64 indexed blueprintId, address indexed operator, bytes32 sourcesHash); @@ -299,6 +300,57 @@ abstract contract BlueprintsManage is Base { } } + /// @notice Set the settlement asset every EventDriven service of this blueprint bills in. + /// @dev The blueprint OWNER — the same party that sets the per-job rate via + /// `setJobEventRates` — declares the settlement asset here, so the rate's units always + /// match the asset's decimals. Each service pins this value at activation + /// (`getServicePaymentAsset`); the CUSTOMER cannot choose the asset at request time (an + /// EventDriven request must pass native `address(0)`). This closes the split-authority + /// flaw where a developer's 6-decimal rate (e.g. 5e6 = 5.00 PathUSD) could be driven to + /// settle in native by a customer requesting `address(0)`, a 10^12x under-payment: with + /// the asset sourced wholly from the blueprint there is NO path to a service whose + /// settlement asset differs from its blueprint's declared asset. + /// + /// The per-job rate (`getJobEventRate`) is denominated in THIS asset's smallest unit. + /// Changing the asset does NOT re-price services that are already live — those keep the + /// asset they pinned at activation. `address(0)` selects native (the default) and skips + /// the manager query (native is the universally billable default, mirroring the + /// request-time native path). A NON-native asset is validated against the manager + /// allow-list for defense-in-depth (fail-closed: a disallowed token reverts + /// `TokenNotAllowed`). The per-job collection path re-checks the allow-list at settle + /// time, so a later manager de-list still fails closed. + /// @param blueprintId The blueprint ID (must be owned by the caller) + /// @param asset The settlement asset (`address(0)` = native) + function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external nonReentrant { + Types.Blueprint storage bp = _getBlueprint(blueprintId); + if (bp.owner != msg.sender) { + revert Errors.NotBlueprintOwner(blueprintId, msg.sender); + } + // Native (`address(0)`) is the universally billable default and needs no manager gate — + // exactly as an EventDriven native request skips the request-time allow-list in + // `ServicesRequests._validateRequestPaymentAsset`. Skipping the query for native also + // means a manager that whitelists ONLY specific ERC20s can never lock a blueprint out of + // its own native default. For a NON-native asset, defense-in-depth: reject an asset the + // blueprint's manager does not allow (fail-closed). The blueprint id is passed as the + // query context — the developer is declaring the asset for the blueprint, before any + // service exists. A `address(0)` manager (no manager) allows everything. + if (asset != address(0) && !_isPaymentAssetAllowedByManager(bp.manager, blueprintId, asset)) { + revert Errors.TokenNotAllowed(asset); + } + _blueprintSettlementAsset[blueprintId] = asset; + emit BlueprintSettlementAssetSet(blueprintId, asset); + } + + /// @notice Get the settlement asset the blueprint's EventDriven services bill in. + /// @dev `address(0)` = native (also the default when never set). This is the asset a NEW + /// service will pin at activation; already-live services keep whatever they pinned when + /// they activated. The per-job rate (`getJobEventRate`) is in this asset's smallest unit. + /// @param blueprintId The blueprint ID + /// @return The blueprint's declared settlement asset (`address(0)` = native) + function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address) { + return _blueprintSettlementAsset[blueprintId]; + } + // ═══════════════════════════════════════════════════════════════════════════ // BLUEPRINT RESOURCE REQUIREMENTS // ═══════════════════════════════════════════════════════════════════════════ diff --git a/src/core/JobsSubmission.sol b/src/core/JobsSubmission.sol index 74398784..e9d9eb4b 100644 --- a/src/core/JobsSubmission.sol +++ b/src/core/JobsSubmission.sol @@ -171,9 +171,12 @@ abstract contract JobsSubmission is Base { if (svc.pricing == Types.PricingModel.EventDriven) { uint256 perJob = _jobEventRates[svc.blueprintId][jobIndex]; // The per-job rate is denominated in the SETTLEMENT ASSET's smallest unit - // (`_serviceEventDrivenAsset[serviceId]`; `address(0)` = native). A service that - // settles in a 6-decimal token (e.g. Tempo PathUSD) therefore carries a rate in - // 6-dec units, not 18. See `getServicePaymentAsset` / `setJobEventRates`. + // (`_serviceEventDrivenAsset[serviceId]`; `address(0)` = native). That asset is the + // one the blueprint DEVELOPER declared (`setBlueprintSettlementAsset`) and the + // service pinned at activation — the same party that set this rate — so a service + // settling in a 6-decimal token (e.g. Tempo PathUSD) carries a rate in 6-dec units, + // and there is no way for the rate's decimals and the asset's decimals to diverge. + // See `getServicePaymentAsset` / `setJobEventRates` / `setBlueprintSettlementAsset`. payment = perJob > 0 ? perJob : _blueprintConfigs[svc.blueprintId].eventRate; address asset = _serviceEventDrivenAsset[serviceId]; address manager = _blueprints[svc.blueprintId].manager; diff --git a/src/core/QuotesCreate.sol b/src/core/QuotesCreate.sol index 561de852..d26a153f 100644 --- a/src/core/QuotesCreate.sol +++ b/src/core/QuotesCreate.sol @@ -234,6 +234,17 @@ abstract contract QuotesCreate is Base { status: Types.ServiceStatus.Active }); + // Pin the EventDriven settlement asset from the BLUEPRINT (developer-declared), mirroring + // the request/approve activation path (`TangleServicesFacet._handleInitialPayments`). The + // quote path is a second way to stand up an EventDriven service, so it must pin the SAME + // asset — otherwise a blueprint declaring a 6-decimal ERC20 rate could have a quote-created + // service left at the native `address(0)` default and settle every job in native at the + // 6-dec rate (the exact 10^12x under-payment this fix closes on the request path). Native + // (`address(0)`) blueprints write the zero-default no-op; the mapping stays consistent. + if (bp.pricing == Types.PricingModel.EventDriven) { + _serviceEventDrivenAsset[activation.serviceId] = _blueprintSettlementAsset[blueprintId]; + } + activation.totalExposure = _processOperatorQuotes(blueprintId, activation.serviceId, operators, exposures, quotes); diff --git a/src/core/ServicesRequests.sol b/src/core/ServicesRequests.sol index 828d58ed..0018ac97 100644 --- a/src/core/ServicesRequests.sol +++ b/src/core/ServicesRequests.sol @@ -208,7 +208,7 @@ abstract contract ServicesRequests is Base { _validateServiceTtl(ttl); BlueprintRequestData memory blueprintData = _loadBlueprintRequestData(blueprintId); - _validatePricingPaymentConsistency(blueprintData.pricing, paymentAmount); + _validatePricingPaymentConsistency(blueprintData.pricing, paymentToken, paymentAmount); uint64 requestContextId = _serviceRequestCount; _validateRequestPaymentAsset( @@ -249,32 +249,46 @@ abstract contract ServicesRequests is Base { if (manager == address(0)) { return; } - // Two zero-deposit cases still require settlement-token validation so a disallowed - // token can never be pinned onto a service that later bills in it: - // - Subscription: the escrow is funded by later top-ups in the selected token. - // - EventDriven with a NON-native token: per-job billing settles in that ERC20, - // so the token must clear the manager allow-list at request time (fail-closed). - // Native (`address(0)`) EventDriven needs no gate — native is the universally - // billable default and matches the prior behavior — so we skip the allow-list query - // rather than forcing native through a manager that may not whitelist `address(0)`. - bool eventDrivenErc20 = pricing == Types.PricingModel.EventDriven && paymentToken != address(0); - if (paymentAmount == 0 && pricing != Types.PricingModel.Subscription && !eventDrivenErc20) return; + // Only the Subscription zero-deposit case still needs request-time settlement-token + // validation: its escrow is funded by later top-ups in the selected token, so a + // disallowed token must be rejected before it can be pinned onto a service that later + // bills in it. EventDriven requests carry NO customer-chosen asset — the settlement + // asset is declared on the blueprint by the developer (`setBlueprintSettlementAsset`, + // validated there) and pinned at activation — so the request's `paymentToken` is always + // native `address(0)` (enforced in `_validatePricingPaymentConsistency`) and needs no + // gate here. PayOnce with a nonzero amount is gated below via the `paymentAmount == 0` + // early-return. + if (paymentAmount == 0 && pricing != Types.PricingModel.Subscription) return; if (!_isPaymentAssetAllowedByManager(manager, requestContextId, paymentToken)) { revert Errors.TokenNotAllowed(paymentToken); } } - function _validatePricingPaymentConsistency(Types.PricingModel pricing, uint256 paymentAmount) private pure { - // Event-driven services are funded per-job (native `msg.value` OR a per-job ERC20 - // transfer), not by an upfront lump sum. Reject non-zero `paymentAmount` AT REQUEST - // TIME so the customer's funds aren't collected only to revert at activation — and - // so a tooling bug can't silently lock funds in the contract until expiry. The - // settlement token itself (native `address(0)` OR an ERC20 such as Tempo PathUSD) is - // permitted and pinned as the service's per-job settlement asset at activation; a - // NON-native token is gated by the manager allow-list in `_validateRequestPaymentAsset` - // (fail-closed: a disallowed token reverts `TokenNotAllowed` at request time). + function _validatePricingPaymentConsistency( + Types.PricingModel pricing, + address paymentToken, + uint256 paymentAmount + ) + private + pure + { + // Event-driven services are funded per-job in the settlement asset the blueprint OWNER + // declared (`setBlueprintSettlementAsset`), NOT by an upfront lump sum and NOT in a + // customer-chosen asset. The CUSTOMER must not pick the settlement asset at request + // time — that split (customer picks asset, developer picks rate) is exactly what let a + // 6-decimal rate settle in native for a 10^12x under-payment. So an EventDriven request + // must pass native `address(0)` as `paymentToken` (the asset is sourced wholly from the + // blueprint at activation) and a zero `paymentAmount` (rejected here so the customer's + // funds aren't collected only to revert at activation, and so a tooling bug can't + // silently lock funds until expiry). if (pricing == Types.PricingModel.EventDriven) { + // Reject a non-zero upfront amount FIRST: a non-zero `paymentAmount` implies tooling + // misuse regardless of the proposed settlement token, and this ordering is relied on + // by the request-flow tests. Then reject any non-native `paymentToken`: the customer + // does not choose the settlement asset (it is sourced from the blueprint at + // activation), so an EventDriven request must be native. if (paymentAmount != 0) revert Errors.UpfrontPaymentNotAllowedForEventDriven(); + if (paymentToken != address(0)) revert Errors.TokenNotAllowed(paymentToken); } } diff --git a/src/core/TangleCoreApi.sol b/src/core/TangleCoreApi.sol index 0f7386b7..cb46230f 100644 --- a/src/core/TangleCoreApi.sol +++ b/src/core/TangleCoreApi.sol @@ -386,8 +386,9 @@ abstract contract TangleCoreApi is Base { /// @notice Get a service's per-job settlement asset (EventDriven pricing). /// @dev Returns the token every per-job bill for this service is collected and - /// distributed in: `address(0)` for native, or the ERC20 the customer selected - /// at request time and pinned at activation. Drivers read this to decide whether + /// distributed in: `address(0)` for native, or the ERC20 the blueprint DEVELOPER + /// declared (`setBlueprintSettlementAsset`) and the service pinned at activation. + /// The customer does NOT choose this asset. Drivers read this to decide whether /// to send native `msg.value` or to `approve` the Tangle and submit with value 0. /// For non-EventDriven services (or an unknown id) this returns `address(0)`, /// which is the native sentinel and does not imply the service settles per-job. diff --git a/src/facets/tangle/TangleBlueprintsManagementFacet.sol b/src/facets/tangle/TangleBlueprintsManagementFacet.sol index 81c9de0a..338eb4d0 100644 --- a/src/facets/tangle/TangleBlueprintsManagementFacet.sol +++ b/src/facets/tangle/TangleBlueprintsManagementFacet.sol @@ -8,7 +8,7 @@ import { IFacetSelectors } from "../../interfaces/IFacetSelectors.sol"; /// @notice Facet for blueprint metadata and ownership contract TangleBlueprintsManagementFacet is BlueprintsManage, IFacetSelectors { function selectors() external pure returns (bytes4[] memory selectorList) { - selectorList = new bytes4[](20); + selectorList = new bytes4[](22); selectorList[0] = this.blueprintCount.selector; selectorList[1] = this.blueprintMetadata.selector; selectorList[2] = this.blueprintSupportedMemberships.selector; @@ -29,5 +29,7 @@ contract TangleBlueprintsManagementFacet is BlueprintsManage, IFacetSelectors { selectorList[17] = this.blueprintSourcesHash.selector; selectorList[18] = this.operatorAckedCurrentSources.selector; selectorList[19] = this.blueprintDefinitionHash.selector; + selectorList[20] = this.setBlueprintSettlementAsset.selector; + selectorList[21] = this.getBlueprintSettlementAsset.selector; } } diff --git a/src/facets/tangle/TangleJobsFacet.sol b/src/facets/tangle/TangleJobsFacet.sol index 359cf819..4f0f2ae3 100644 --- a/src/facets/tangle/TangleJobsFacet.sol +++ b/src/facets/tangle/TangleJobsFacet.sol @@ -23,7 +23,7 @@ contract TangleJobsFacet is JobsSubmission, IFacetSelectors { /// @notice Distribute job payment (called from Jobs mixin) /// @dev Payment is distributed based on effective exposure (delegation × exposureBps), /// in the service's pinned EventDriven settlement asset (native `address(0)` OR the - /// ERC20 the customer selected at request time). This is the same token the per-job + /// ERC20 the blueprint developer declared). This is the same token the per-job /// `collectPayment` in `JobsSubmission._collectJobPaymentIfNeeded` pulled in, so what /// the customer paid and what operators/dev/treasury receive are always one currency. function _distributeJobPayment(uint64 serviceId, uint256 payment) internal override { diff --git a/src/facets/tangle/TangleServicesFacet.sol b/src/facets/tangle/TangleServicesFacet.sol index 13b49aa0..a50ce9ac 100644 --- a/src/facets/tangle/TangleServicesFacet.sol +++ b/src/facets/tangle/TangleServicesFacet.sol @@ -182,14 +182,21 @@ contract TangleServicesFacet is ServicesApprovals, IFacetSelectors { if (pricing == Types.PricingModel.EventDriven) { // EventDriven services are funded per-job, not by an upfront lump sum // (`paymentAmount` is rejected at request-time by - // `_validatePricingPaymentConsistency`). Pin the settlement asset the customer - // selected at request time — native `address(0)` OR a manager-allowed ERC20 — - // so every per-job bill collects and distributes in that currency. The token - // was already allow-list-validated at request time in - // `ServicesRequests._validateRequestPaymentAsset` (fail-closed for non-native). - // `address(0)` is both the native sentinel and the zero-default, so this write - // is a no-op for native services but keeps the mapping explicit and auditable. - _serviceEventDrivenAsset[serviceId] = paymentToken; + // `_validatePricingPaymentConsistency`, which also forces the request's + // `paymentToken` to native `address(0)` so the customer cannot choose the asset). + // Pin the settlement asset from the BLUEPRINT the DEVELOPER declared + // (`_blueprintSettlementAsset[blueprintId]`) — native `address(0)` OR a + // manager-allowed ERC20 — NOT from the customer's request. Sourcing the asset and + // the per-job rate (`setJobEventRates`) from the SAME party keeps their units + // aligned and makes the 10^12x under-payment exploit — a 6-dec rate driven to + // settle in native — structurally impossible. The blueprint asset was allow-list + // validated by `setBlueprintSettlementAsset`, and the per-job collection path + // re-checks the allow-list at settle time (fail-closed on a later manager de-list). + // Pinning per-service means a later `setBlueprintSettlementAsset` cannot re-price + // this already-live service. `address(0)` is both the native sentinel and the + // zero-default, so this write is a no-op for native blueprints but keeps the + // mapping explicit and auditable. + _serviceEventDrivenAsset[serviceId] = _blueprintSettlementAsset[blueprintId]; return; } diff --git a/src/interfaces/ITangleBlueprints.sol b/src/interfaces/ITangleBlueprints.sol index 6a7e417a..727404b7 100644 --- a/src/interfaces/ITangleBlueprints.sol +++ b/src/interfaces/ITangleBlueprints.sol @@ -123,6 +123,24 @@ interface ITangleBlueprints { /// `setJobEventRates` and `getServicePaymentAsset`. function getJobEventRate(uint64 blueprintId, uint8 jobIndex) external view returns (uint256 rate); + /// @notice Emitted when a blueprint owner sets the blueprint's EventDriven settlement asset. + event BlueprintSettlementAssetSet(uint64 indexed blueprintId, address indexed asset); + + /// @notice Set the settlement asset every EventDriven service of this blueprint bills in + /// (blueprint owner only). + /// @dev The SAME party that sets the per-job rate (`setJobEventRates`) declares the settlement + /// asset here, so the rate's units match the asset's decimals. Each service pins this at + /// activation (`getServicePaymentAsset`); the customer cannot choose the asset (an + /// EventDriven request must pass native `address(0)`). `address(0)` = native. A NON-native + /// asset is validated against the manager allow-list (fail-closed). Changing the asset does + /// not re-price already-live services. + function setBlueprintSettlementAsset(uint64 blueprintId, address asset) external; + + /// @notice Get the settlement asset the blueprint's EventDriven services bill in. + /// @dev `address(0)` = native (also the default). The per-job rate (`getJobEventRate`) is in + /// this asset's smallest unit. + function getBlueprintSettlementAsset(uint64 blueprintId) external view returns (address); + // ═══════════════════════════════════════════════════════════════════════════ // RESOURCE REQUIREMENTS // ═══════════════════════════════════════════════════════════════════════════ diff --git a/src/interfaces/ITangleServices.sol b/src/interfaces/ITangleServices.sol index ee9c38d3..fbd119d6 100644 --- a/src/interfaces/ITangleServices.sol +++ b/src/interfaces/ITangleServices.sol @@ -283,8 +283,9 @@ interface ITangleServices { function getService(uint64 serviceId) external view returns (Types.Service memory); /// @notice Get a service's per-job (EventDriven) settlement asset. - /// @dev `address(0)` = native, otherwise the ERC20 pinned at activation from the - /// request's `paymentToken`. Every per-job bill for the service is collected and + /// @dev `address(0)` = native, otherwise the ERC20 the blueprint DEVELOPER declared + /// (`setBlueprintSettlementAsset`) and the service pinned at activation. The customer + /// does not choose this asset. Every per-job bill for the service is collected and /// distributed in this asset. Non-EventDriven services return `address(0)`. The /// per-job rate from `getJobEventRate` is denominated in THIS asset's smallest unit. function getServicePaymentAsset(uint64 serviceId) external view returns (address); diff --git a/test/tangle/EventDrivenErc20Settlement.t.sol b/test/tangle/EventDrivenErc20Settlement.t.sol index bd21c3d3..f5851a19 100644 --- a/test/tangle/EventDrivenErc20Settlement.t.sol +++ b/test/tangle/EventDrivenErc20Settlement.t.sol @@ -10,9 +10,9 @@ import { MockERC20 } from "../mocks/MockERC20.sol"; import { MockToken } from "../mocks/MockToken.sol"; import { TangleJobsRFQFacet } from "../../src/facets/tangle/TangleJobsRFQFacet.sol"; -/// @notice Blueprint manager that allow-lists a single settlement asset for both request-time -/// and job-time payment-asset checks (context id is ignored, so the same answer holds -/// for `requestContextId` and `serviceId`). +/// @notice Blueprint manager that allow-lists a single settlement asset for both the +/// blueprint-time (`setBlueprintSettlementAsset`) and job-time payment-asset checks +/// (context id is ignored, so the same answer holds for `blueprintId` and `serviceId`). contract AllowAssetManager is BlueprintServiceManagerBase { mapping(address => bool) internal _allowed; @@ -27,8 +27,11 @@ contract AllowAssetManager is BlueprintServiceManagerBase { /// @title EventDrivenErc20SettlementTest /// @notice Covers the generalized EventDriven per-job settlement asset: an EventDriven service -/// may settle per-job billing in native OR a manager-allowed ERC20 (e.g. Tempo PathUSD). -/// AUDITED FINANCIAL code — every path (happy, back-compat, fail-closed) is exercised. +/// may settle per-job billing in native OR a manager-allowed ERC20 (e.g. Tempo PathUSD), +/// with the settlement asset chosen by the blueprint DEVELOPER at the blueprint level +/// (same party that sets the per-job rate), NOT by the customer at request time. +/// AUDITED FINANCIAL code — every path (happy, back-compat, fail-closed, exploit) is +/// exercised. contract EventDrivenErc20SettlementTest is BaseTest { uint256 internal constant OPERATOR1_PK = 0x1A; uint256 internal constant OPERATOR2_PK = 0x2B; @@ -46,6 +49,10 @@ contract EventDrivenErc20SettlementTest is BaseTest { uint256 internal constant RATE = 10 ether; // per-job rate (18-dec token units) + bytes32 private constant QUOTE_TYPEHASH = keccak256( + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,uint8 operation,uint64 serviceId,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)Asset(uint8 kind,address token)AssetSecurityCommitment(Asset asset,uint16 exposureBps)ResourceCommitment(uint8 kind,uint64 count)" + ); + function setUp() public override { super.setUp(); @@ -85,6 +92,9 @@ contract EventDrivenErc20SettlementTest is BaseTest { tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-erc20", address(manager), cfg)); nativeBlueprint = tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-native", address(nativeManager), cfg)); + // Developer declares the settlement asset ON THE BLUEPRINT. The native blueprint is + // left at the address(0) default (no setter call) to prove native back-compat. + tangle.setBlueprintSettlementAsset(erc20Blueprint, address(settleToken)); vm.stopPrank(); _registerOperator(operator1, 5 ether); @@ -94,12 +104,49 @@ contract EventDrivenErc20SettlementTest is BaseTest { _registerForBlueprint(operator1, nativeBlueprint); _registerForBlueprint(operator2, nativeBlueprint); - erc20Service = _activateEventDrivenService(erc20Blueprint, address(settleToken)); - nativeService = _activateEventDrivenService(nativeBlueprint, address(0)); + erc20Service = _activateEventDrivenService(erc20Blueprint); + nativeService = _activateEventDrivenService(nativeBlueprint); } // ═══════════════════════════════════════════════════════════════════════════ - // getServicePaymentAsset VIEW + // BLUEPRINT SETTLEMENT ASSET (setter auth + validation + view) + // ═══════════════════════════════════════════════════════════════════════════ + + function test_GetBlueprintSettlementAsset_Erc20() public view { + assertEq(tangle.getBlueprintSettlementAsset(erc20Blueprint), address(settleToken)); + } + + function test_GetBlueprintSettlementAsset_NativeDefaultIsZero() public view { + // Never set on the native blueprint -> defaults to the native sentinel. + assertEq(tangle.getBlueprintSettlementAsset(nativeBlueprint), address(0)); + } + + function test_SetBlueprintSettlementAsset_OnlyOwner() public { + vm.prank(user1); + vm.expectRevert(abi.encodeWithSelector(Errors.NotBlueprintOwner.selector, erc20Blueprint, user1)); + tangle.setBlueprintSettlementAsset(erc20Blueprint, address(settleToken)); + } + + function test_SetBlueprintSettlementAsset_RejectsManagerDisallowedToken() public { + MockERC20 badToken = new MockERC20(); + vm.prank(developer); + vm.expectRevert(abi.encodeWithSelector(Errors.TokenNotAllowed.selector, address(badToken))); + tangle.setBlueprintSettlementAsset(erc20Blueprint, address(badToken)); + } + + function test_SetBlueprintSettlementAsset_NativeAlwaysAllowed() public { + // Even a manager that allow-lists nothing must accept native (address(0)). + AllowAssetManager strict = new AllowAssetManager(); + Types.BlueprintConfig memory cfg = _edConfig(RATE); + vm.startPrank(developer); + uint64 bp = tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-strict", address(strict), cfg)); + tangle.setBlueprintSettlementAsset(bp, address(0)); // must not revert + vm.stopPrank(); + assertEq(tangle.getBlueprintSettlementAsset(bp), address(0)); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // getServicePaymentAsset VIEW (pinned from the BLUEPRINT, not the request) // ═══════════════════════════════════════════════════════════════════════════ function test_GetServicePaymentAsset_Erc20() public view { @@ -115,6 +162,149 @@ contract EventDrivenErc20SettlementTest is BaseTest { assertEq(tangle.getServicePaymentAsset(9999), address(0)); } + // ═══════════════════════════════════════════════════════════════════════════ + // CUSTOMER CANNOT CHOOSE THE ASSET (root-cause guard) + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice (a) An EventDriven request with a non-zero paymentToken reverts — the customer + /// cannot pick the settlement asset. The asset comes wholly from the blueprint. + function test_Request_CustomerCannotChooseErc20Asset() public { + address[] memory ops = new address[](1); + ops[0] = operator1; + address[] memory callers = new address[](0); + + // Even the blueprint's OWN allow-listed settlement token is rejected as a request-time + // paymentToken: EventDriven requests must be native. The asset is not the customer's. + vm.prank(user1); + vm.expectRevert(abi.encodeWithSelector(Errors.TokenNotAllowed.selector, address(settleToken))); + tangle.requestService( + erc20Blueprint, ops, "", callers, 0, address(settleToken), 0, Types.ConfidentialityPolicy.Any + ); + } + + /// @notice (a) A non-native paymentToken NOT on the blueprint's asset is likewise rejected — + /// same revert, because the check is "EventDriven request must be native", not a + /// per-token allow-list. + function test_Request_CustomerCannotChooseArbitraryAsset() public { + MockERC20 badToken = new MockERC20(); + address[] memory ops = new address[](1); + ops[0] = operator1; + address[] memory callers = new address[](0); + + vm.prank(user1); + vm.expectRevert(abi.encodeWithSelector(Errors.TokenNotAllowed.selector, address(badToken))); + tangle.requestService( + erc20Blueprint, ops, "", callers, 0, address(badToken), 0, Types.ConfidentialityPolicy.Any + ); + } + + /// @notice (b) With the blueprint's asset = ERC20, jobs settle in that token via transferFrom + /// and the customer CANNOT force native — supplying native value reverts. + function test_Erc20_Blueprint_SettlesInErc20_CustomerCannotForceNative() public { + // The service pinned the blueprint's ERC20 asset (proven by the view). + assertEq(tangle.getServicePaymentAsset(erc20Service), address(settleToken)); + + // Native value on the ERC20 service reverts (collectPayment requires msgValue == 0). + vm.startPrank(user1); + settleToken.approve(address(tangle), RATE); + vm.expectRevert(abi.encodeWithSelector(Errors.InvalidMsgValue.selector, 0, RATE)); + tangle.submitJob{ value: RATE }(erc20Service, 0, ""); + vm.stopPrank(); + + // The correct path settles in the ERC20. + vm.startPrank(user1); + settleToken.approve(address(tangle), RATE); + uint64 callId = tangle.submitJob(erc20Service, 0, ""); + vm.stopPrank(); + assertEq(tangle.getJobCall(erc20Service, callId).payment, RATE); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // EXPLOIT (c): a 6-dec-scale rate CANNOT be driven to settle in native + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice (c) The original 10^12x under-payment exploit, proven dead. A blueprint authors a + /// 6-decimal PathUSD rate (5e6 = 5.00 pUSD). PRE-FIX, the customer chose the + /// settlement asset at request time: passing native `address(0)` pinned a + /// NATIVE-settling service, so every job settled at 5e6 wei = 5e-12 TNT (~$0) while + /// consuming real compute priced at $5.00. POST-FIX, the settlement asset is sourced + /// wholly from the blueprint (the developer's pUSD), independent of what the customer + /// passes. The customer's request MUST be native `address(0)` (it is not a choice — + /// a non-native request reverts), and the resulting service still settles in pUSD. + /// So: + /// 1. the customer cannot request a NON-native asset (reverts, tested elsewhere); + /// 2. requesting native `address(0)` — the pre-fix exploit trigger — no longer + /// yields a native-settling service: it settles in the blueprint's pUSD; and + /// 3. every job collects 5e6 pUSD UNITS (5.00 pUSD), never 5e6 wei of native, and + /// native value is rejected outright. + /// There is NO code path to a service whose settlement asset differs from its + /// blueprint's declared asset. + function test_Exploit_SixDecimalRateCannotSettleInNative() public { + MockToken usd = new MockToken("PathUSD", "pUSD", 6); + usd.mint(user1, 1_000_000e6); + + AllowAssetManager usdManager = new AllowAssetManager(); + usdManager.setAllowed(address(usd), true); + + uint256 usdRate = 5e6; // 5.00 pUSD in 6-dec smallest units — the exploit's rate. + Types.BlueprintConfig memory cfg = _edConfig(usdRate); + + vm.startPrank(developer); + uint64 bp = + tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-exploit", address(usdManager), cfg)); + tangle.setBlueprintSettlementAsset(bp, address(usd)); + vm.stopPrank(); + _registerForBlueprint(operator1, bp); + _registerForBlueprint(operator2, bp); + + address[] memory ops = new address[](2); + ops[0] = operator1; + ops[1] = operator2; + address[] memory callers = new address[](0); + + // ATTACK: request the service passing native `address(0)` — the exact input that PRE-FIX + // pinned a native-settling service and enabled the 10^12x under-payment. The request + // succeeds (native is the mandatory request asset), but crucially the service pins the + // BLUEPRINT's pUSD asset, NOT native. The customer's native input does NOT choose the + // settlement asset. + vm.prank(user1); + uint64 requestId = + tangle.requestService(bp, ops, "", callers, 0, address(0), 0, Types.ConfidentialityPolicy.Any); + vm.prank(operator1); + tangle.approveService(_approve(requestId)); + vm.prank(operator2); + tangle.approveService(_approve(requestId)); + uint64 svc = tangle.serviceCount() - 1; + + assertEq( + tangle.getServicePaymentAsset(svc), + address(usd), + "native request STILL settles in the blueprint's pUSD - the exploit's native pin is gone" + ); + + // The customer cannot pay the pUSD-priced job with native value: the ERC20 path requires + // msgValue == 0. Native cannot be substituted to under-pay. + vm.startPrank(user1); + usd.approve(address(tangle), usdRate); + vm.expectRevert(abi.encodeWithSelector(Errors.InvalidMsgValue.selector, 0, usdRate)); + tangle.submitJob{ value: usdRate }(svc, 0, ""); + vm.stopPrank(); + + // The only reachable path collects exactly 5e6 pUSD UNITS (5.00 pUSD), never 5e6 wei of + // native. If the exploit were live, `payment` would be 5e6 wei of a NATIVE-settling + // service (5e-12 TNT); here it is 5.00 pUSD and no native is accepted. + uint256 nativeBalBefore = address(tangle).balance; + uint256 usdBefore = usd.balanceOf(user1); + vm.startPrank(user1); + usd.approve(address(tangle), usdRate); + uint64 callId = tangle.submitJob(svc, 0, ""); + vm.stopPrank(); + + assertEq(tangle.getJobCall(svc, callId).payment, usdRate, "payment is 5e6 pUSD units (5.00 pUSD)"); + assertEq(usdBefore - usd.balanceOf(user1), usdRate, "exactly 5.00 pUSD pulled from customer"); + assertEq(address(tangle).balance, nativeBalBefore, "no native was accepted for this job"); + } + // ═══════════════════════════════════════════════════════════════════════════ // ERC20 HAPPY PATH // ═══════════════════════════════════════════════════════════════════════════ @@ -186,7 +376,7 @@ contract EventDrivenErc20SettlementTest is BaseTest { } // ═══════════════════════════════════════════════════════════════════════════ - // NATIVE BACK-COMPAT + // NATIVE BACK-COMPAT (d): blueprint asset unset == pre-change behavior // ═══════════════════════════════════════════════════════════════════════════ function test_Native_SubmitJob_UnchangedBehavior() public { @@ -218,21 +408,13 @@ contract EventDrivenErc20SettlementTest is BaseTest { function test_Native_RequestService_NoManagerGateForNative() public { // A native EventDriven REQUEST must not require the manager to allow `address(0)` at - // request time: build a blueprint whose manager allow-lists NOTHING and confirm the - // native request still activates. (This is the request-time behavior my change - // preserves — the job-time native gate is a separate, pre-existing check.) + // request time: build a blueprint whose manager allow-lists NOTHING (and whose + // settlement asset is left at the native default) and confirm the native request still + // activates. The job-time native gate is a separate, pre-existing check. AllowAssetManager strictManager = new AllowAssetManager(); - // Deliberately allow nothing at request time. + // Deliberately allow nothing at request time; leave blueprint asset unset (native). - Types.BlueprintConfig memory cfg = Types.BlueprintConfig({ - membership: Types.MembershipModel.Fixed, - pricing: Types.PricingModel.EventDriven, - minOperators: 1, - maxOperators: 10, - subscriptionRate: 0, - subscriptionInterval: 0, - eventRate: RATE - }); + Types.BlueprintConfig memory cfg = _edConfig(RATE); vm.prank(developer); uint64 bp = tangle.createBlueprint( _blueprintDefinitionWithConfig("ipfs://ed-native-strict", address(strictManager), cfg) @@ -242,7 +424,7 @@ contract EventDrivenErc20SettlementTest is BaseTest { // The request activates without the manager allow-listing native — no request-time // TokenNotAllowed revert — and the service's settlement asset is native. - uint64 svc = _activateEventDrivenService(bp, address(0)); + uint64 svc = _activateEventDrivenService(bp); assertEq(tangle.getServicePaymentAsset(svc), address(0)); // Now allow native so the (pre-existing) job-time gate passes, and confirm a native @@ -254,35 +436,95 @@ contract EventDrivenErc20SettlementTest is BaseTest { } // ═══════════════════════════════════════════════════════════════════════════ - // FAIL-CLOSED + // PIN-AT-ACTIVATION (e): changing the blueprint asset does not re-price live services // ═══════════════════════════════════════════════════════════════════════════ - function test_FailClosed_RequestDisallowedErc20Reverts() public { - // A second, un-allowlisted token. - MockERC20 badToken = new MockERC20(); - badToken.mint(user1, 1000 ether); + function test_PinAtActivation_BlueprintAssetChangeDoesNotRepriceLiveService() public { + // erc20Service pinned settleToken at activation. + assertEq(tangle.getServicePaymentAsset(erc20Service), address(settleToken)); - address[] memory ops = new address[](1); - ops[0] = operator1; - address[] memory callers = new address[](0); + // Developer switches the blueprint to a DIFFERENT (also-allowed) token AFTER the + // service went live. + MockERC20 newToken = new MockERC20(); + manager.setAllowed(address(newToken), true); + vm.prank(developer); + tangle.setBlueprintSettlementAsset(erc20Blueprint, address(newToken)); + assertEq(tangle.getBlueprintSettlementAsset(erc20Blueprint), address(newToken), "blueprint asset updated"); - vm.prank(user1); - vm.expectRevert(abi.encodeWithSelector(Errors.TokenNotAllowed.selector, address(badToken))); - tangle.requestService( - erc20Blueprint, ops, "", callers, 0, address(badToken), 0, Types.ConfidentialityPolicy.Any + // The LIVE service keeps its originally pinned asset — it is NOT re-priced. + assertEq( + tangle.getServicePaymentAsset(erc20Service), + address(settleToken), + "live service keeps its activation-pinned asset" ); + + // A newly activated service picks up the NEW blueprint asset. + newToken.mint(user1, 1_000_000 ether); + uint64 svc2 = _activateEventDrivenService(erc20Blueprint); + assertEq(tangle.getServicePaymentAsset(svc2), address(newToken), "new service pins the new asset"); + + // And the old service still bills in its old token. + vm.startPrank(user1); + settleToken.approve(address(tangle), RATE); + uint64 callId = tangle.submitJob(erc20Service, 0, ""); + vm.stopPrank(); + assertEq(tangle.getJobCall(erc20Service, callId).payment, RATE); } - function test_FailClosed_NativeValueOnErc20ServiceReverts() public { - // ERC20-settlement service: sending native value must revert in collectPayment - // (ERC20 path requires msgValue == 0). + // ═══════════════════════════════════════════════════════════════════════════ + // QUOTE-PATH ACTIVATION also pins the BLUEPRINT asset (second activation path) + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice The RFQ `createServiceFromQuotes` path is a SECOND way to stand up an EventDriven + /// service. It must pin the same blueprint-declared settlement asset as the + /// request/approve path — otherwise a quote-created service of an ERC20 blueprint + /// would be left at the native `address(0)` default and re-open the exact 10^12x + /// under-payment (a 6-dec rate settling in native) through a different entry point. + function test_QuotePath_EventDrivenService_PinsBlueprintErc20Asset() public { + Types.SignedQuote[] memory quotes = _createZeroCostQuote(erc20Blueprint, 120); + + vm.prank(user1); + uint64 svc = tangle.createServiceFromQuotes(erc20Blueprint, quotes, "", new address[](0), 120); + + // The quote-created service settles in the blueprint's ERC20, not native. + assertEq( + tangle.getServicePaymentAsset(svc), + address(settleToken), + "quote-created EventDriven service must pin the blueprint's ERC20 asset" + ); + + // And a job on it settles in the ERC20 (native value rejected). vm.startPrank(user1); settleToken.approve(address(tangle), RATE); vm.expectRevert(abi.encodeWithSelector(Errors.InvalidMsgValue.selector, 0, RATE)); - tangle.submitJob{ value: RATE }(erc20Service, 0, ""); + tangle.submitJob{ value: RATE }(svc, 0, ""); vm.stopPrank(); + + vm.startPrank(user1); + settleToken.approve(address(tangle), RATE); + uint64 callId = tangle.submitJob(svc, 0, ""); + vm.stopPrank(); + assertEq(tangle.getJobCall(svc, callId).payment, RATE, "quote-path job settles in the ERC20 at RATE"); } + /// @notice Native quote-created service leaves the asset at the native default (back-compat). + function test_QuotePath_NativeBlueprint_LeavesNativeDefault() public { + Types.SignedQuote[] memory quotes = _createZeroCostQuote(nativeBlueprint, 120); + + vm.prank(user1); + uint64 svc = tangle.createServiceFromQuotes(nativeBlueprint, quotes, "", new address[](0), 120); + + assertEq(tangle.getServicePaymentAsset(svc), address(0), "native quote service stays native"); + + vm.prank(user1); + uint64 callId = tangle.submitJob{ value: RATE }(svc, 0, ""); + assertEq(tangle.getJobCall(svc, callId).payment, RATE); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // FAIL-CLOSED + // ═══════════════════════════════════════════════════════════════════════════ + function test_FailClosed_MissingApprovalOnErc20ServiceReverts() public { // No approval -> transferFrom reverts inside collectPayment. vm.prank(user1); @@ -300,7 +542,7 @@ contract EventDrivenErc20SettlementTest is BaseTest { function test_FailClosed_ManagerDelistsErc20AfterActivation() public { // Manager de-lists the settlement token AFTER activation: per-job collection must - // fail closed at submit time even though the token was allowed at request time. + // fail closed at submit time even though the token was allowed at blueprint-set time. manager.setAllowed(address(settleToken), false); vm.startPrank(user1); @@ -366,21 +608,15 @@ contract EventDrivenErc20SettlementTest is BaseTest { // Rate is 5.00 pUSD expressed in the token's 6-decimal smallest unit. uint256 usdRate = 5e6; - Types.BlueprintConfig memory cfg = Types.BlueprintConfig({ - membership: Types.MembershipModel.Fixed, - pricing: Types.PricingModel.EventDriven, - minOperators: 1, - maxOperators: 10, - subscriptionRate: 0, - subscriptionInterval: 0, - eventRate: usdRate - }); - vm.prank(developer); + Types.BlueprintConfig memory cfg = _edConfig(usdRate); + vm.startPrank(developer); uint64 bp = tangle.createBlueprint(_blueprintDefinitionWithConfig("ipfs://ed-usd", address(usdManager), cfg)); + tangle.setBlueprintSettlementAsset(bp, address(usd)); + vm.stopPrank(); _registerForBlueprint(operator1, bp); _registerForBlueprint(operator2, bp); - uint64 svc = _activateEventDrivenService(bp, address(usd)); + uint64 svc = _activateEventDrivenService(bp); assertEq(tangle.getServicePaymentAsset(svc), address(usd)); uint256 userBefore = usd.balanceOf(user1); @@ -445,8 +681,22 @@ contract EventDrivenErc20SettlementTest is BaseTest { // HELPERS // ═══════════════════════════════════════════════════════════════════════════ - /// @notice Request + fully approve a 2-operator EventDriven service settling in `asset`. - function _activateEventDrivenService(uint64 blueprintId, address asset) internal returns (uint64 serviceId) { + function _edConfig(uint256 eventRate) internal pure returns (Types.BlueprintConfig memory) { + return Types.BlueprintConfig({ + membership: Types.MembershipModel.Fixed, + pricing: Types.PricingModel.EventDriven, + minOperators: 1, + maxOperators: 10, + subscriptionRate: 0, + subscriptionInterval: 0, + eventRate: eventRate + }); + } + + /// @notice Request + fully approve a 2-operator EventDriven service. The settlement asset is + /// sourced from the BLUEPRINT (set by the developer), so the customer's request is + /// always native `address(0)` — the customer never chooses the asset. + function _activateEventDrivenService(uint64 blueprintId) internal returns (uint64 serviceId) { address[] memory ops = new address[](2); ops[0] = operator1; ops[1] = operator2; @@ -454,7 +704,7 @@ contract EventDrivenErc20SettlementTest is BaseTest { vm.prank(user1); uint64 requestId = - tangle.requestService(blueprintId, ops, "", callers, 0, asset, 0, Types.ConfidentialityPolicy.Any); + tangle.requestService(blueprintId, ops, "", callers, 0, address(0), 0, Types.ConfidentialityPolicy.Any); vm.prank(operator1); tangle.approveService(_approve(requestId)); @@ -464,6 +714,58 @@ contract EventDrivenErc20SettlementTest is BaseTest { serviceId = tangle.serviceCount() - 1; } + /// @notice A single zero-cost operator quote signed by operator1 for the given blueprint, + /// suitable for `createServiceFromQuotes` on an EventDriven blueprint (which requires + /// `totalCost == 0`). Empty security/resource commitment arrays. + function _createZeroCostQuote(uint64 blueprintId, uint64 ttl) internal view returns (Types.SignedQuote[] memory) { + Types.QuoteDetails memory details = Types.QuoteDetails({ + requester: user1, + blueprintId: blueprintId, + ttlBlocks: ttl, + totalCost: 0, + timestamp: uint64(block.timestamp), + expiry: uint64(block.timestamp + 1 hours), + confidentiality: Types.ConfidentialityPolicy.Any, + operation: Types.QuoteOperation.Create, + serviceId: 0, + securityCommitments: new Types.AssetSecurityCommitment[](0), + resourceCommitments: new Types.ResourceCommitment[](0) + }); + + bytes32 emptyArrayHash = keccak256(""); + bytes32 domainSeparator = keccak256( + abi.encode( + keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), + keccak256(bytes("TangleQuote")), + keccak256(bytes("1")), + block.chainid, + address(tangle) + ) + ); + bytes32 structHash = keccak256( + abi.encode( + QUOTE_TYPEHASH, + details.requester, + details.blueprintId, + details.ttlBlocks, + details.totalCost, + details.timestamp, + details.expiry, + details.confidentiality, + details.operation, + details.serviceId, + emptyArrayHash, // hash of the empty securityCommitments array + emptyArrayHash // hash of the empty resourceCommitments array + ) + ); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(OPERATOR1_PK, digest); + + Types.SignedQuote[] memory quotes = new Types.SignedQuote[](1); + quotes[0] = Types.SignedQuote({ details: details, signature: abi.encodePacked(r, s, v), operator: operator1 }); + return quotes; + } + function _createJobQuote( address operator, uint256 privateKey, diff --git a/test/tangle/Payments.t.sol b/test/tangle/Payments.t.sol index ba69e0b5..a6182db0 100644 --- a/test/tangle/Payments.t.sol +++ b/test/tangle/Payments.t.sol @@ -382,15 +382,15 @@ contract PaymentsTest is BaseTest { vm.stopPrank(); } - /// @notice Fail-closed: an EventDriven request naming a manager-DISALLOWED ERC20 - /// settlement token (with zero upfront amount) must revert `TokenNotAllowed` - /// at request time, before any state is written. Since PR the - /// "EventDriven is native-only" constraint was relaxed to allow a chosen ERC20 - /// settlement token, the guard that must hold is the manager allow-list, not a - /// blanket native-only revert. + /// @notice Fail-closed: an EventDriven request naming ANY non-native ERC20 settlement token + /// (with zero upfront amount) must revert `TokenNotAllowed` at request time, before + /// any state is written. The customer does NOT choose the settlement asset — it is + /// declared on the blueprint by the developer (`setBlueprintSettlementAsset`) and + /// pinned at activation — so an EventDriven request must be native `address(0)`. This + /// holds regardless of whether the manager would have allow-listed the token. function test_EventDriven_RequestService_RevertDisallowedErc20SettlementToken() public { MockPaymentAssetManager manager = new MockPaymentAssetManager(); - // Explicitly DISALLOW the token (default mapping value is false anyway). + // The token is not native, so the request fails closed no matter what the manager allows. manager.setAssetAllowed(address(token), false); Types.BlueprintConfig memory config = Types.BlueprintConfig({