From 8b2cd36700de2733a25a26ed6c236ac1c4d24091 Mon Sep 17 00:00:00 2001 From: ShahNami Date: Mon, 24 Jul 2023 11:43:16 +0100 Subject: [PATCH] Add skip ABI validation flag --- src/cmd/deploy.ts | 1 + .../docs-schemas/definitions.schema.json | 4 ++ ...kmonitor-properties-skip-abi-validation.md | 3 ++ .../definitions-definitions-blockmonitor.md | 49 +++++++++++++------ src/types/docs/definitions.md | 49 +++++++++++++------ src/types/schemas/definitions.schema.json | 2 +- src/types/types/resources.schema.d.ts | 4 ++ src/utils/index.ts | 1 + 8 files changed, 82 insertions(+), 31 deletions(-) create mode 100644 src/types/docs/definitions-definitions-blockmonitor-properties-skip-abi-validation.md diff --git a/src/cmd/deploy.ts b/src/cmd/deploy.ts index 0b16786..b2dbde3 100644 --- a/src/cmd/deploy.ts +++ b/src/cmd/deploy.ts @@ -781,6 +781,7 @@ export default class PlatformDeploy { name: match.name, abi: addressRule && addressRule.abi, paused: match.paused, + skipABIValidation: match.skipABIValidation, alertThreshold: match.alertThreshold, autotaskTrigger: match.notifyConfig?.autotaskId, alertTimeoutMs: match.notifyConfig?.timeoutMs, diff --git a/src/types/docs-schemas/definitions.schema.json b/src/types/docs-schemas/definitions.schema.json index 84cf7de..bd0f816 100644 --- a/src/types/docs-schemas/definitions.schema.json +++ b/src/types/docs-schemas/definitions.schema.json @@ -368,6 +368,10 @@ "required": ["amount", "window-seconds"] }, "paused": { "type": "boolean" }, + "skip-abi-validation": { + "type": "boolean", + "description": "A boolean value that indicates whether the UI should skip ABI validation checks. Enable this if you wish to use custom or partial ABIs for your monitors." + }, "action-condition": { "$ref": "definitions.schema.json#/definitions/action", "format": "uri-reference" }, "action-trigger": { "$ref": "definitions.schema.json#/definitions/action", "format": "uri-reference" }, "confirm-level": { diff --git a/src/types/docs/definitions-definitions-blockmonitor-properties-skip-abi-validation.md b/src/types/docs/definitions-definitions-blockmonitor-properties-skip-abi-validation.md new file mode 100644 index 0000000..46040c3 --- /dev/null +++ b/src/types/docs/definitions-definitions-blockmonitor-properties-skip-abi-validation.md @@ -0,0 +1,3 @@ +## skip-abi-validation Type + +`boolean` diff --git a/src/types/docs/definitions-definitions-blockmonitor.md b/src/types/docs/definitions-definitions-blockmonitor.md index 969f23c..4e33f5a 100644 --- a/src/types/docs/definitions-definitions-blockmonitor.md +++ b/src/types/docs/definitions-definitions-blockmonitor.md @@ -8,21 +8,22 @@ # 0 Properties -| Property | Type | Required | Nullable | Defined by | -| :------------------------------------ | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-name.md "definitions.schema.json#/definitions/blockMonitor/properties/name") | -| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-type.md "definitions.schema.json#/definitions/blockMonitor/properties/type") | -| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-network.md "definitions.schema.json#/definitions/blockMonitor/properties/network") | -| [addresses](#addresses) | `array` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-addresses.md "definitions.schema.json#/definitions/blockMonitor/properties/addresses") | -| [abi](#abi) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "definitions.schema.json#/definitions/blockMonitor/properties/abi") | -| [alert-threshold](#alert-threshold) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-alertthreshold.md "definitions.schema.json#/definitions/blockMonitor/properties/alert-threshold") | -| [paused](#paused) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-paused.md "definitions.schema.json#/definitions/blockMonitor/properties/paused") | -| [action-condition](#action-condition) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-condition") | -| [action-trigger](#action-trigger) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-trigger") | -| [confirm-level](#confirm-level) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-confirm-level.md "definitions.schema.json#/definitions/blockMonitor/properties/confirm-level") | -| [notify-config](#notify-config) | `object` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-notifyconfig.md "definitions.schema.json#/definitions/blockMonitor/properties/notify-config") | -| [conditions](#conditions) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-conditions.md "definitions.schema.json#/definitions/blockMonitor/properties/conditions") | -| [risk-category](#risk-category) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-riskcategory.md "definitions.schema.json#/definitions/blockMonitor/properties/risk-category") | +| Property | Type | Required | Nullable | Defined by | +| :------------------------------------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-name.md "definitions.schema.json#/definitions/blockMonitor/properties/name") | +| [type](#type) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-type.md "definitions.schema.json#/definitions/blockMonitor/properties/type") | +| [network](#network) | `string` | Required | cannot be null | [Definitions](definitions-definitions-network.md "definitions.schema.json#/definitions/blockMonitor/properties/network") | +| [addresses](#addresses) | `array` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-addresses.md "definitions.schema.json#/definitions/blockMonitor/properties/addresses") | +| [abi](#abi) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "definitions.schema.json#/definitions/blockMonitor/properties/abi") | +| [alert-threshold](#alert-threshold) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-alertthreshold.md "definitions.schema.json#/definitions/blockMonitor/properties/alert-threshold") | +| [paused](#paused) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-paused.md "definitions.schema.json#/definitions/blockMonitor/properties/paused") | +| [skip-abi-validation](#skip-abi-validation) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-skip-abi-validation.md "definitions.schema.json#/definitions/blockMonitor/properties/skip-abi-validation") | +| [action-condition](#action-condition) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-condition") | +| [action-trigger](#action-trigger) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-trigger") | +| [confirm-level](#confirm-level) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-confirm-level.md "definitions.schema.json#/definitions/blockMonitor/properties/confirm-level") | +| [notify-config](#notify-config) | `object` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-notifyconfig.md "definitions.schema.json#/definitions/blockMonitor/properties/notify-config") | +| [conditions](#conditions) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-conditions.md "definitions.schema.json#/definitions/blockMonitor/properties/conditions") | +| [risk-category](#risk-category) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-riskcategory.md "definitions.schema.json#/definitions/blockMonitor/properties/risk-category") | ## name @@ -209,6 +210,24 @@ any of `boolean` +## skip-abi-validation + +A boolean value that indicates whether the UI should skip ABI validation checks. Enable this if you wish to use custom or partial ABIs for your monitors. + +`skip-abi-validation` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blockmonitor-properties-skip-abi-validation.md "definitions.schema.json#/definitions/blockMonitor/properties/skip-abi-validation") + +### skip-abi-validation Type + +`boolean` + ## action-condition diff --git a/src/types/docs/definitions.md b/src/types/docs/definitions.md index dfa21c5..5a9335f 100644 --- a/src/types/docs/definitions.md +++ b/src/types/docs/definitions.md @@ -1520,21 +1520,22 @@ Reference this group by using {"$ref":"definitions.schema.json#/definitions/blockMonitor"} ``` -| Property | Type | Required | Nullable | Defined by | -| :------------------------------------ | :-------- | :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [name](#name-4) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-name.md "definitions.schema.json#/definitions/blockMonitor/properties/name") | -| [type](#type-2) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-type.md "definitions.schema.json#/definitions/blockMonitor/properties/type") | -| [network](#network-2) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-network.md "definitions.schema.json#/definitions/blockMonitor/properties/network") | -| [addresses](#addresses) | `array` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-addresses.md "definitions.schema.json#/definitions/blockMonitor/properties/addresses") | -| [abi](#abi-1) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "definitions.schema.json#/definitions/blockMonitor/properties/abi") | -| [alert-threshold](#alert-threshold) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-alertthreshold.md "definitions.schema.json#/definitions/blockMonitor/properties/alert-threshold") | -| [paused](#paused-1) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-paused.md "definitions.schema.json#/definitions/blockMonitor/properties/paused") | -| [action-condition](#action-condition) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-condition") | -| [action-trigger](#action-trigger) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-trigger") | -| [confirm-level](#confirm-level) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-confirm-level.md "definitions.schema.json#/definitions/blockMonitor/properties/confirm-level") | -| [notify-config](#notify-config) | `object` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-notifyconfig.md "definitions.schema.json#/definitions/blockMonitor/properties/notify-config") | -| [conditions](#conditions) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-conditions.md "definitions.schema.json#/definitions/blockMonitor/properties/conditions") | -| [risk-category](#risk-category) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-riskcategory.md "definitions.schema.json#/definitions/blockMonitor/properties/risk-category") | +| Property | Type | Required | Nullable | Defined by | +| :------------------------------------------ | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [name](#name-4) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-name.md "definitions.schema.json#/definitions/blockMonitor/properties/name") | +| [type](#type-2) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-type.md "definitions.schema.json#/definitions/blockMonitor/properties/type") | +| [network](#network-2) | `string` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-network.md "definitions.schema.json#/definitions/blockMonitor/properties/network") | +| [addresses](#addresses) | `array` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-addresses.md "definitions.schema.json#/definitions/blockMonitor/properties/addresses") | +| [abi](#abi-1) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-abitype.md "definitions.schema.json#/definitions/blockMonitor/properties/abi") | +| [alert-threshold](#alert-threshold) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-alertthreshold.md "definitions.schema.json#/definitions/blockMonitor/properties/alert-threshold") | +| [paused](#paused-1) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-paused.md "definitions.schema.json#/definitions/blockMonitor/properties/paused") | +| [skip-abi-validation](#skip-abi-validation) | `boolean` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-skip-abi-validation.md "definitions.schema.json#/definitions/blockMonitor/properties/skip-abi-validation") | +| [action-condition](#action-condition) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-condition") | +| [action-trigger](#action-trigger) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-action.md "definitions.schema.json#/definitions/blockMonitor/properties/action-trigger") | +| [confirm-level](#confirm-level) | Merged | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-confirm-level.md "definitions.schema.json#/definitions/blockMonitor/properties/confirm-level") | +| [notify-config](#notify-config) | `object` | Required | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-notifyconfig.md "definitions.schema.json#/definitions/blockMonitor/properties/notify-config") | +| [conditions](#conditions) | `object` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-conditions.md "definitions.schema.json#/definitions/blockMonitor/properties/conditions") | +| [risk-category](#risk-category) | `string` | Optional | cannot be null | [Definitions](definitions-definitions-blockmonitor-properties-riskcategory.md "definitions.schema.json#/definitions/blockMonitor/properties/risk-category") | ### name @@ -1721,6 +1722,24 @@ any of `boolean` +### skip-abi-validation + +A boolean value that indicates whether the UI should skip ABI validation checks. Enable this if you wish to use custom or partial ABIs for your monitors. + +`skip-abi-validation` + +* is optional + +* Type: `boolean` + +* cannot be null + +* defined in: [Definitions](definitions-definitions-blockmonitor-properties-skip-abi-validation.md "definitions.schema.json#/definitions/blockMonitor/properties/skip-abi-validation") + +#### skip-abi-validation Type + +`boolean` + ### action-condition diff --git a/src/types/schemas/definitions.schema.json b/src/types/schemas/definitions.schema.json index 342c675..a903d0e 100644 --- a/src/types/schemas/definitions.schema.json +++ b/src/types/schemas/definitions.schema.json @@ -1 +1 @@ -{"$id":"definitions.schema.json","$schema":"http://json-schema.org/draft-07/schema#","title":"Definitions","definitions":{"address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"risk-category":{"title":"RiskCategory","type":"string","enum":["NONE","GOVERNANCE","ACCESS-CONTROL","SUSPICIOUS","FINANCIAL","TECHNICAL"]},"network":{"title":"Network","type":"string","enum":["mainnet","sepolia","goerli","xdai","sokol","fuse","bsc","bsctest","fantom","fantomtest","moonbase","moonriver","moonbeam","matic","mumbai","avalanche","fuji","optimism","optimism-goerli","arbitrum","arbitrum-nova","arbitrum-goerli","celo","alfajores","harmony-s0","harmony-test-s0","aurora","auroratest","hedera","hederatest","x-dfk-avax-chain","x-dfk-avax-chain-test","zksync","zksync-goerli","base-goerli","linea-goerli"]},"policy":{"title":"Policy","type":"object","properties":{"gas-price-cap":{"type":"integer"},"whitelist-receivers":{"title":"WhitelistReceivers","type":"array","items":{"type":"string"}},"eip1559-pricing":{"type":"boolean"},"private-transactions":{"type":"boolean"}}},"relayer":{"title":"Relayer","type":"object","properties":{"name":{"type":"string"},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"min-balance":{"type":"integer"},"address-from-relayer":{"title":"AddressFromRelayer","type":"object"},"policy":{"$ref":"#/definitions/policy","format":"uri-reference"},"api-keys":{"title":"RelayerAPIKeys","type":"array","items":{"type":"string"}}},"required":["name","network","min-balance"]},"contract":{"title":"Contract","type":"object","properties":{"name":{"type":"string"},"address":{"$ref":"#/definitions/address","format":"uri-reference"},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"abi":{"$ref":"#/definitions/abi"},"nat-spec":{"type":"string"}},"required":["name","address","network"]},"notificationType":{"title":"NotificationType","type":"string","enum":["slack","email","discord","telegram","datadog","webhook","opsgenie","pager-duty"]},"datadogConfig":{"title":"DatadogConfig","type":"object","properties":{"api-key":{"type":"string"},"metric-prefix":{"type":"string","maxLength":100,"pattern":"^[A-Za-z]+[A-Za-z0-9_\\.]*\\.$"}},"required":["api-key","metric-prefix"]},"urlConfig":{"title":"UrlConfig","type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"telegramBotConfig":{"title":"TelegramConfig","type":"object","properties":{"bot-token":{"type":"string"},"chat-id":{"type":"string"}},"required":["bot-token","chat-id"]},"emailConfig":{"title":"EmailConfig","type":"object","properties":{"emails":{"title":"Emails","type":"array","items":{"type":"string","format":"email"},"default":[]}},"required":["emails"]},"opsgenieUserType":{"title":"OpsgenieUserType","type":"string","enum":["team","user","escalation","schedule"]},"opsgeniePriorityLevel":{"title":"OpsgeniePriorityLevel","type":"string","enum":["P1","P2","P3","P4","P5"]},"opsgenieInstanceLocation":{"title":"OpsgenieInstanceLocation","type":"string","enum":["US","EU"]},"opsgenieUser":{"title":"OpsgenieUser","type":"object","properties":{"username":{"type":"string"},"fullName":{"type":"string"},"id":{"type":"string"},"type":{"$ref":"#/definitions/opsgenieUserType"}},"required":["type","username"],"additionalProperties":false},"opsgenieConfig":{"title":"OpsgenieConfig","properties":{"apiKey":{"type":"string"},"instanceLocation":{"$ref":"#/definitions/opsgenieInstanceLocation"},"alias":{"type":"string","maxLength":512},"responders":{"title":"OpsgenieConfigResponders","type":"array","items":{"$ref":"#/definitions/opsgenieUser"}},"visibleTo":{"title":"OpsgenieConfigVisibleTo","type":"array","items":{"$ref":"#/definitions/opsgenieUser"}},"actions":{"title":"OpsgenieConfigActions","type":"array","maxItems":10,"items":{"type":"string","maxLength":50}},"tags":{"title":"OpsgenieConfigTags","type":"array","maxItems":10,"items":{"type":"string","maxLength":50}},"details":{"title":"OpsgenieConfigDetails","type":"object","additionalProperties":{"type":"string"}},"entity":{"type":"string","maxLength":512},"priority":{"$ref":"#/definitions/opsgeniePriorityLevel"},"note":{"type":"string","maxLength":25000}},"required":["apiKey","instanceLocation"],"additionalProperties":false},"pagerDutyEventType":{"title":"PagerDutyEventType","type":"string","enum":["change","alert"]},"pagerDutyEventAction":{"title":"PagerDutyEventAction","type":"string","enum":["trigger","acknowledge","resolve"]},"pagerDutySeverity":{"title":"PagerDutySeverity","type":"string","enum":["critical","error","warning","info"]},"pagerDutyConfig":{"title":"PagerDutyConfig","properties":{"token":{"type":"string"},"eventType":{"$ref":"#/definitions/pagerDutyEventType"},"routingKey":{"type":"string","maxLength":32,"minLength":32},"eventAction":{"$ref":"#/definitions/pagerDutyEventAction"},"dedupKey":{"type":"string","maxLength":255},"severity":{"$ref":"#/definitions/pagerDutySeverity"},"component":{"type":"string"},"group":{"type":"string"},"class":{"type":"string"},"customDetails":{"title":"PagerDutyConfigCustomDetails","type":"object","additionalProperties":{"type":"string"}}},"if":{"properties":{"eventType":{"const":"alert"}}},"then":{"required":["eventAction","severity"]},"required":["token","eventType","routingKey"],"additionalProperties":false},"notification":{"title":"Notification","type":"object","properties":{"type":{"$ref":"#/definitions/notificationType","format":"uri-reference"},"name":{"type":"string"},"paused":{"type":"boolean"},"config":{"title":"Config","type":"object","oneOf":[{"$ref":"#/definitions/emailConfig","format":"uri-reference"},{"$ref":"#/definitions/telegramBotConfig","format":"uri-reference"},{"$ref":"#/definitions/datadogConfig","format":"uri-reference"},{"$ref":"#/definitions/urlConfig","format":"uri-reference"},{"$ref":"#/definitions/opsgenieConfig","format":"uri-reference"},{"$ref":"#/definitions/pagerDutyConfig","format":"uri-reference"}]}},"required":["type","name","paused","config"]},"category":{"title":"Category","type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"notification-ids":{"title":"CategoryNotificationIds","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["name"]},"blockMonitor":{"title":"BlockMonitor","type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["BLOCK"]},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"addresses":{"title":"Addresses","type":"array","items":{"$ref":"#/definitions/address","format":"uri-reference"}},"abi":{"$ref":"#/definitions/abi"},"alert-threshold":{"title":"AlertThreshold","type":"object","properties":{"amount":{"type":"integer"},"window-seconds":{"type":"integer"}},"required":["amount","window-seconds"]},"paused":{"type":"boolean"},"action-condition":{"$ref":"#/definitions/action","format":"uri-reference"},"action-trigger":{"$ref":"#/definitions/action","format":"uri-reference"},"confirm-level":{"oneOf":[{"type":"string","enum":["safe","finalized"]},{"type":"integer"}]},"notify-config":{"title":"NotifyConfig","type":"object","properties":{"timeout":{"type":"integer"},"message":{"type":"string"},"message-subject":{"type":"string"},"category":{"$ref":"#/definitions/category","format":"uri-reference"},"channels":{"title":"Channels","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["channels"]},"conditions":{"title":"Conditions","type":"object","properties":{"event":{"title":"Event","type":"array","items":{"title":"EventItems","type":"object","properties":{"signature":{"type":"string"},"expression":{"type":"string"}},"required":["signature"]}},"function":{"title":"Function","type":"array","items":{"title":"FunctionItems","type":"object","properties":{"signature":{"type":"string"},"expression":{"type":"string"}},"required":["signature"]}},"transaction":{"type":"string"}}},"risk-category":{"$ref":"#/definitions/risk-category"}},"required":["name","type","network","addresses","notify-config"]},"fortaMonitor":{"title":"FortaMonitor","type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["FORTA"]},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"addresses":{"title":"Addresses","type":"array","items":{"$ref":"#/definitions/address","format":"uri-reference"}},"abi":{"$ref":"#/definitions/abi"},"alert-threshold":{"title":"AlertThreshold","type":"object","properties":{"amount":{"type":"integer"},"window-seconds":{"type":"integer"}}},"paused":{"type":"boolean"},"action-condition":{"$ref":"#/definitions/action","format":"uri-reference"},"action-trigger":{"$ref":"#/definitions/action","format":"uri-reference"},"notify-config":{"title":"NotifyConfig","type":"object","properties":{"timeout":{"type":"integer"},"message":{"type":"string"},"message-subject":{"type":"string"},"category":{"$ref":"#/definitions/category","format":"uri-reference"},"channels":{"title":"Channels","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["channels"]},"conditions":{"title":"Conditions","type":"object","properties":{"min-scanner-count":{"type":"integer"},"severity":{"type":"integer","enum":[0,1,2,3,4,5]},"alert-ids":{"title":"AlertIDs","type":"array","items":{"type":"string"}}},"required":["min-scanner-count"]},"forta-node-id":{"type":"string"},"forta-last-processed-time":{"type":"string"},"agent-ids":{"title":"AgentIDs","type":"array","items":{"type":"string"}},"risk-category":{"$ref":"#/definitions/risk-category"}},"required":["name","type","network","notify-config"]},"monitor":{"title":"Monitor","type":"object","oneOf":[{"$ref":"#/definitions/blockMonitor","format":"uri-reference"},{"$ref":"#/definitions/fortaMonitor","format":"uri-reference"}]},"action":{"title":"Action","type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"relayer":{"$ref":"#/definitions/relayer","format":"uri-reference"},"trigger":{"title":"Trigger","type":"object","properties":{"type":{"title":"TriggerType","type":"string","enum":["schedule","webhook","sentinel","monitor-filter"]},"cron":{"title":"TriggerCron","type":"string"},"frequency":{"title":"TriggerFrequency","type":"integer"}},"if":{"properties":{"type":{"const":"schedule"}}},"then":{"oneOf":[{"required":["cron"]},{"required":["frequency"]}]},"else":{},"required":["type"]},"paused":{"type":"boolean"}},"required":["name","path","trigger","paused"]},"blockExplorerApiKey":{"title":"BlockExplorerApiKey","type":"object","properties":{"key":{"type":"string"},"network":{"$ref":"#/definitions/network","format":"uri-reference"}},"required":["key","network"]},"abi":{"title":"AbiType","anyOf":[{"title":"StringABI","type":"string"},{"title":"ArrayABI","type":"array"}]}}} +{"$id":"definitions.schema.json","$schema":"http://json-schema.org/draft-07/schema#","title":"Definitions","definitions":{"address":{"title":"Address","type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"risk-category":{"title":"RiskCategory","type":"string","enum":["NONE","GOVERNANCE","ACCESS-CONTROL","SUSPICIOUS","FINANCIAL","TECHNICAL"]},"network":{"title":"Network","type":"string","enum":["mainnet","sepolia","goerli","xdai","sokol","fuse","bsc","bsctest","fantom","fantomtest","moonbase","moonriver","moonbeam","matic","mumbai","avalanche","fuji","optimism","optimism-goerli","arbitrum","arbitrum-nova","arbitrum-goerli","celo","alfajores","harmony-s0","harmony-test-s0","aurora","auroratest","hedera","hederatest","x-dfk-avax-chain","x-dfk-avax-chain-test","zksync","zksync-goerli","base-goerli","linea-goerli"]},"policy":{"title":"Policy","type":"object","properties":{"gas-price-cap":{"type":"integer"},"whitelist-receivers":{"title":"WhitelistReceivers","type":"array","items":{"type":"string"}},"eip1559-pricing":{"type":"boolean"},"private-transactions":{"type":"boolean"}}},"relayer":{"title":"Relayer","type":"object","properties":{"name":{"type":"string"},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"min-balance":{"type":"integer"},"address-from-relayer":{"title":"AddressFromRelayer","type":"object"},"policy":{"$ref":"#/definitions/policy","format":"uri-reference"},"api-keys":{"title":"RelayerAPIKeys","type":"array","items":{"type":"string"}}},"required":["name","network","min-balance"]},"contract":{"title":"Contract","type":"object","properties":{"name":{"type":"string"},"address":{"$ref":"#/definitions/address","format":"uri-reference"},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"abi":{"$ref":"#/definitions/abi"},"nat-spec":{"type":"string"}},"required":["name","address","network"]},"notificationType":{"title":"NotificationType","type":"string","enum":["slack","email","discord","telegram","datadog","webhook","opsgenie","pager-duty"]},"datadogConfig":{"title":"DatadogConfig","type":"object","properties":{"api-key":{"type":"string"},"metric-prefix":{"type":"string","maxLength":100,"pattern":"^[A-Za-z]+[A-Za-z0-9_\\.]*\\.$"}},"required":["api-key","metric-prefix"]},"urlConfig":{"title":"UrlConfig","type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"telegramBotConfig":{"title":"TelegramConfig","type":"object","properties":{"bot-token":{"type":"string"},"chat-id":{"type":"string"}},"required":["bot-token","chat-id"]},"emailConfig":{"title":"EmailConfig","type":"object","properties":{"emails":{"title":"Emails","type":"array","items":{"type":"string","format":"email"},"default":[]}},"required":["emails"]},"opsgenieUserType":{"title":"OpsgenieUserType","type":"string","enum":["team","user","escalation","schedule"]},"opsgeniePriorityLevel":{"title":"OpsgeniePriorityLevel","type":"string","enum":["P1","P2","P3","P4","P5"]},"opsgenieInstanceLocation":{"title":"OpsgenieInstanceLocation","type":"string","enum":["US","EU"]},"opsgenieUser":{"title":"OpsgenieUser","type":"object","properties":{"username":{"type":"string"},"fullName":{"type":"string"},"id":{"type":"string"},"type":{"$ref":"#/definitions/opsgenieUserType"}},"required":["type","username"],"additionalProperties":false},"opsgenieConfig":{"title":"OpsgenieConfig","properties":{"apiKey":{"type":"string"},"instanceLocation":{"$ref":"#/definitions/opsgenieInstanceLocation"},"alias":{"type":"string","maxLength":512},"responders":{"title":"OpsgenieConfigResponders","type":"array","items":{"$ref":"#/definitions/opsgenieUser"}},"visibleTo":{"title":"OpsgenieConfigVisibleTo","type":"array","items":{"$ref":"#/definitions/opsgenieUser"}},"actions":{"title":"OpsgenieConfigActions","type":"array","maxItems":10,"items":{"type":"string","maxLength":50}},"tags":{"title":"OpsgenieConfigTags","type":"array","maxItems":10,"items":{"type":"string","maxLength":50}},"details":{"title":"OpsgenieConfigDetails","type":"object","additionalProperties":{"type":"string"}},"entity":{"type":"string","maxLength":512},"priority":{"$ref":"#/definitions/opsgeniePriorityLevel"},"note":{"type":"string","maxLength":25000}},"required":["apiKey","instanceLocation"],"additionalProperties":false},"pagerDutyEventType":{"title":"PagerDutyEventType","type":"string","enum":["change","alert"]},"pagerDutyEventAction":{"title":"PagerDutyEventAction","type":"string","enum":["trigger","acknowledge","resolve"]},"pagerDutySeverity":{"title":"PagerDutySeverity","type":"string","enum":["critical","error","warning","info"]},"pagerDutyConfig":{"title":"PagerDutyConfig","properties":{"token":{"type":"string"},"eventType":{"$ref":"#/definitions/pagerDutyEventType"},"routingKey":{"type":"string","maxLength":32,"minLength":32},"eventAction":{"$ref":"#/definitions/pagerDutyEventAction"},"dedupKey":{"type":"string","maxLength":255},"severity":{"$ref":"#/definitions/pagerDutySeverity"},"component":{"type":"string"},"group":{"type":"string"},"class":{"type":"string"},"customDetails":{"title":"PagerDutyConfigCustomDetails","type":"object","additionalProperties":{"type":"string"}}},"if":{"properties":{"eventType":{"const":"alert"}}},"then":{"required":["eventAction","severity"]},"required":["token","eventType","routingKey"],"additionalProperties":false},"notification":{"title":"Notification","type":"object","properties":{"type":{"$ref":"#/definitions/notificationType","format":"uri-reference"},"name":{"type":"string"},"paused":{"type":"boolean"},"config":{"title":"Config","type":"object","oneOf":[{"$ref":"#/definitions/emailConfig","format":"uri-reference"},{"$ref":"#/definitions/telegramBotConfig","format":"uri-reference"},{"$ref":"#/definitions/datadogConfig","format":"uri-reference"},{"$ref":"#/definitions/urlConfig","format":"uri-reference"},{"$ref":"#/definitions/opsgenieConfig","format":"uri-reference"},{"$ref":"#/definitions/pagerDutyConfig","format":"uri-reference"}]}},"required":["type","name","paused","config"]},"category":{"title":"Category","type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"notification-ids":{"title":"CategoryNotificationIds","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["name"]},"blockMonitor":{"title":"BlockMonitor","type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["BLOCK"]},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"addresses":{"title":"Addresses","type":"array","items":{"$ref":"#/definitions/address","format":"uri-reference"}},"abi":{"$ref":"#/definitions/abi"},"alert-threshold":{"title":"AlertThreshold","type":"object","properties":{"amount":{"type":"integer"},"window-seconds":{"type":"integer"}},"required":["amount","window-seconds"]},"paused":{"type":"boolean"},"skip-abi-validation":{"type":"boolean","description":"A boolean value that indicates whether the UI should skip ABI validation checks. Enable this if you wish to use custom or partial ABIs for your monitors."},"action-condition":{"$ref":"#/definitions/action","format":"uri-reference"},"action-trigger":{"$ref":"#/definitions/action","format":"uri-reference"},"confirm-level":{"oneOf":[{"type":"string","enum":["safe","finalized"]},{"type":"integer"}]},"notify-config":{"title":"NotifyConfig","type":"object","properties":{"timeout":{"type":"integer"},"message":{"type":"string"},"message-subject":{"type":"string"},"category":{"$ref":"#/definitions/category","format":"uri-reference"},"channels":{"title":"Channels","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["channels"]},"conditions":{"title":"Conditions","type":"object","properties":{"event":{"title":"Event","type":"array","items":{"title":"EventItems","type":"object","properties":{"signature":{"type":"string"},"expression":{"type":"string"}},"required":["signature"]}},"function":{"title":"Function","type":"array","items":{"title":"FunctionItems","type":"object","properties":{"signature":{"type":"string"},"expression":{"type":"string"}},"required":["signature"]}},"transaction":{"type":"string"}}},"risk-category":{"$ref":"#/definitions/risk-category"}},"required":["name","type","network","addresses","notify-config"]},"fortaMonitor":{"title":"FortaMonitor","type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["FORTA"]},"network":{"$ref":"#/definitions/network","format":"uri-reference"},"addresses":{"title":"Addresses","type":"array","items":{"$ref":"#/definitions/address","format":"uri-reference"}},"abi":{"$ref":"#/definitions/abi"},"alert-threshold":{"title":"AlertThreshold","type":"object","properties":{"amount":{"type":"integer"},"window-seconds":{"type":"integer"}}},"paused":{"type":"boolean"},"action-condition":{"$ref":"#/definitions/action","format":"uri-reference"},"action-trigger":{"$ref":"#/definitions/action","format":"uri-reference"},"notify-config":{"title":"NotifyConfig","type":"object","properties":{"timeout":{"type":"integer"},"message":{"type":"string"},"message-subject":{"type":"string"},"category":{"$ref":"#/definitions/category","format":"uri-reference"},"channels":{"title":"Channels","type":"array","items":{"$ref":"#/definitions/notification","format":"uri-reference"}}},"required":["channels"]},"conditions":{"title":"Conditions","type":"object","properties":{"min-scanner-count":{"type":"integer"},"severity":{"type":"integer","enum":[0,1,2,3,4,5]},"alert-ids":{"title":"AlertIDs","type":"array","items":{"type":"string"}}},"required":["min-scanner-count"]},"forta-node-id":{"type":"string"},"forta-last-processed-time":{"type":"string"},"agent-ids":{"title":"AgentIDs","type":"array","items":{"type":"string"}},"risk-category":{"$ref":"#/definitions/risk-category"}},"required":["name","type","network","notify-config"]},"monitor":{"title":"Monitor","type":"object","oneOf":[{"$ref":"#/definitions/blockMonitor","format":"uri-reference"},{"$ref":"#/definitions/fortaMonitor","format":"uri-reference"}]},"action":{"title":"Action","type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"relayer":{"$ref":"#/definitions/relayer","format":"uri-reference"},"trigger":{"title":"Trigger","type":"object","properties":{"type":{"title":"TriggerType","type":"string","enum":["schedule","webhook","sentinel","monitor-filter"]},"cron":{"title":"TriggerCron","type":"string"},"frequency":{"title":"TriggerFrequency","type":"integer"}},"if":{"properties":{"type":{"const":"schedule"}}},"then":{"oneOf":[{"required":["cron"]},{"required":["frequency"]}]},"else":{},"required":["type"]},"paused":{"type":"boolean"}},"required":["name","path","trigger","paused"]},"blockExplorerApiKey":{"title":"BlockExplorerApiKey","type":"object","properties":{"key":{"type":"string"},"network":{"$ref":"#/definitions/network","format":"uri-reference"}},"required":["key","network"]},"abi":{"title":"AbiType","anyOf":[{"title":"StringABI","type":"string"},{"title":"ArrayABI","type":"array"}]}}} diff --git a/src/types/types/resources.schema.d.ts b/src/types/types/resources.schema.d.ts index 8e1f3e0..25a5059 100644 --- a/src/types/types/resources.schema.d.ts +++ b/src/types/types/resources.schema.d.ts @@ -428,6 +428,10 @@ export interface BlockMonitor { abi?: AbiType; 'alert-threshold'?: AlertThreshold; paused?: boolean; + /** + * A boolean value that indicates whether the UI should skip ABI validation checks. Enable this if you wish to use custom or partial ABIs for your monitors. + */ + 'skip-abi-validation'?: boolean; 'action-condition'?: Action1; 'action-trigger'?: Action2; 'confirm-level'?: ('safe' | 'finalized') | number; diff --git a/src/utils/index.ts b/src/utils/index.ts index 5d0da77..33fb23b 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -330,6 +330,7 @@ export const constructMonitor = ( network: monitor.network, addresses: monitor.addresses, confirmLevel: compatibleBlockWatcher!.confirmLevel, + skipABIValidation: monitor['skip-abi-validation'], eventConditions: monitor.conditions && monitor.conditions.event &&