UNPKG

@openzeppelin/defender-as-code

Version:
250 lines 9.15 kB
import { JsonFragment } from 'ethers'; import { Network, SupportedNetwork } from '@openzeppelin/defender-sdk-base-client'; import { Contract } from '@openzeppelin/defender-sdk-proposal-client/lib/models/contract'; import { RelayerGetResponse, RelayerApiKey, PrivateTransactionMode } from '@openzeppelin/defender-sdk-relay-client/lib/models'; import { RelayerGroupResponse, RelayerGroupRelayer } from '@openzeppelin/defender-sdk-relay-group-client/lib/models'; import { DefenderApiResponseError } from '@openzeppelin/defender-sdk-base-client/lib/api/api-error'; import { SaveNotificationRequest, NotificationSummary, DatadogConfig, SlackConfig, TelegramBotConfig, EmailConfig, DiscordConfig, NotificationType } from '@openzeppelin/defender-sdk-monitor-client/lib/models/notification'; import { CreateMonitorResponse, BlockWatcher } from '@openzeppelin/defender-sdk-monitor-client'; import { TenantNetworkResponse } from '@openzeppelin/defender-sdk-network-client'; import { CreateBlockMonitorResponse, CreateFortaMonitorResponse, ExternalCreateBlockMonitorRequest, ExternalCreateFortaMonitorRequest, NotificationReference, MonitorRiskCategory } from '@openzeppelin/defender-sdk-monitor-client/lib/models/monitor'; import { Action, SecretsMap, ScheduleTrigger, WebhookTrigger, SentinelTrigger, MonitorFilterTrigger } from '@openzeppelin/defender-sdk-action-client/lib/models/action'; import { BlockExplorerApiKeyResponse } from '@openzeppelin/defender-sdk-deploy-client'; import { OpsgenieConfig } from '@openzeppelin/defender-sdk-monitor-client/lib/models/opsgenie'; import { PagerDutyConfig } from '@openzeppelin/defender-sdk-monitor-client/lib/models/pager-duty'; export type DefenderAPIError = DefenderApiResponseError; export type DefenderRelayerApiKey = RelayerApiKey; export type DefenderSecretsMap = SecretsMap; export type DefenderContract = Contract; export type DefenderRelayer = RelayerGetResponse; export type DefenderRelayerGroup = RelayerGroupResponse; export type DefenderRelayerGroupRelayer = RelayerGroupRelayer; export type DefenderAction = Action; export type DefenderBlockWatcher = BlockWatcher; export type DefenderNotification = NotificationSummary; export type DefenderNotificationReference = NotificationReference; export type DefenderMonitor = CreateMonitorResponse; export type DefenderBlockMonitorResponse = CreateBlockMonitorResponse; export type DefenderFortaMonitorResponse = CreateFortaMonitorResponse; export type DefenderBlockMonitor = ExternalCreateBlockMonitorRequest; export type DefenderFortaMonitor = ExternalCreateFortaMonitorRequest; export type DefenderSlackConfig = SlackConfig; export type DefenderDatadogConfig = DatadogConfig; export type DefenderDiscordConfig = DiscordConfig; export type DefenderTelegramConfig = TelegramBotConfig; export type DefenderEmailConfig = EmailConfig; export type DefenderNetwork = Network; export type DefenderBlockExplorerApiKey = BlockExplorerApiKeyResponse; export type DefenderWebhookTrigger = WebhookTrigger; export type DefenderScheduleTrigger = ScheduleTrigger; export type DefenderMonitorTrigger = SentinelTrigger; export type DefenderMonitorFilterTrigger = MonitorFilterTrigger; export type DefenderMonitorRiskCategory = MonitorRiskCategory; export type DefenderTenantNetwork = TenantNetworkResponse; import * as SchemaDefender from '../types/types/defender.schema'; import * as SchemaResources from '../types/types/resources.schema'; import * as SchemaProvider from '../types/types/provider.schema'; export type Resources = SchemaResources.Resources; export type Provider = SchemaProvider.Provider; export type Defender = SchemaDefender.Defender; export interface IDefenderServerless { provider: { name: 'defender'; } & Provider; defender: Defender; resources: Resources; } export type ResourceType = 'Monitors' | 'Relayers' | 'Relayer Groups' | 'Notifications' | 'Actions' | 'Contracts' | 'Secrets' | 'Block Explorer Api Keys' | 'Forked Networks' | 'Private Networks'; export type YPolicy = { 'gas-price-cap'?: number; 'whitelist-receivers'?: string[]; 'eip1559-pricing'?: boolean; 'private-transactions'?: boolean | PrivateTransactionMode; }; export type YRelayer = { 'name': string; 'network': Network; 'min-balance': number; 'policy'?: YPolicy; 'api-keys': any[]; 'address-from-relayer'?: YRelayer; }; export type YRelayerGroupRelayer = { 'relayer-id': string; 'address': string; 'key-id'?: string; 'balance'?: string; }; export type YRelayerGroup = { 'name': string; 'network': Network; 'min-balance': number; 'policies'?: YPolicy; 'api-keys': any[]; 'relayers': number; 'user-weight-caps': { [user: string]: number; }; 'notification-channels': { 'events': ('pending' | 'sent' | 'submitted' | 'inmempool' | 'mined' | 'confirmed' | 'failed' | 'expired')[]; 'notification-ids': (YNotification | string)[]; }; }; export type YAction = { name: string; path: string; relayer?: YRelayer; trigger: { type: 'schedule' | 'webhook' | 'sentinel' | 'monitor-filter'; frequency?: number; cron?: string; }; paused: boolean; }; export type YSlackConfig = { url: string; }; export type YTelegramConfig = { 'bot-token': string; 'chat-id': string; }; export type YDiscordConfig = { url: string; }; export type YEmailConfig = { emails: string[]; }; export type YDatadogConfig = { 'api-key': string; 'metric-prefix': string; }; export type YWebhookConfig = { url: string; secret?: string; }; export type YOpsgenieConfig = OpsgenieConfig; export type YPagerdutyConfig = PagerDutyConfig; export type YNotificationSeverityLevel = 'LOW' | 'MEDIUM' | 'HIGH'; export type YNotification = SaveNotificationRequest & { type: NotificationType; name: string; paused: boolean; config: YSlackConfig | YTelegramConfig | YDatadogConfig | YDiscordConfig | YEmailConfig | YOpsgenieConfig | YPagerdutyConfig; }; export type YBlockMonitor = { 'name': string; 'type': 'BLOCK'; 'network': Network; 'addresses': string[]; 'abi'?: string | string[] | JsonFragment[]; 'alert-threshold'?: { 'amount': number; 'window-seconds': number; }; 'paused'?: boolean; 'action-condition'?: YAction; 'action-trigger'?: YAction; 'confirm-level'?: number | 'safe' | 'finalized'; 'notify-config': { 'timeout'?: number; 'message'?: string; 'message-subject'?: string; 'channels': YNotification[]; 'severity-level': YNotificationSeverityLevel; }; 'conditions'?: { event: { signature: string; expression?: string; }[]; function: { signature: string; expression?: string; }[]; transaction?: string; }; 'risk-category': DefenderMonitorRiskCategory; }; export type YFortaMonitor = { 'name': string; 'type': 'FORTA'; 'network'?: Network; 'addresses'?: string[]; 'abi'?: string | string[] | JsonFragment[]; 'alert-threshold'?: { 'amount': number; 'window-seconds': number; }; 'paused'?: boolean; 'action-condition'?: YAction; 'action-trigger'?: YAction; 'notify-config': { 'timeout'?: number; 'message'?: string; 'message-subject'?: string; 'channels': YNotification[]; 'severity-level': YNotificationSeverityLevel; }; 'conditions'?: { 'min-scanner-count': number; 'severity'?: 0 | 1 | 2 | 3 | 4 | 5; 'alert-ids'?: string[]; }; 'forta-node-id'?: string; 'agent-ids'?: string[]; 'forta-last-processed-time'?: string; 'risk-category': DefenderMonitorRiskCategory; }; export type YMonitor = YBlockMonitor | YFortaMonitor; export type YContract = { 'name': string; 'address': string; 'network': Network; 'abi'?: string | string[] | JsonFragment[]; 'nat-spec'?: string; }; export type YSecret = { [k: string]: string; }; export type YForkedNetwork = { 'name': string; 'supported-network': SupportedNetwork; 'rpc-url': string; 'api-key': string; 'block-explorer-url': string; }; export type TeamKey = { apiKey: string; apiSecret: string; }; export type DeployResponse = { name: string; id: string; success: boolean; notice?: string; error?: string; [k: string]: any; }; export type DeployOutput<T> = { removed: T[]; created: T[]; updated: T[]; }; export type ListDefenderResources = { monitors: DefenderMonitor[]; actions: DefenderAction[]; notifications: DefenderNotification[]; contracts: DefenderContract[]; relayerApiKeys: DefenderRelayerApiKey[]; relayerGroupApiKeys: DefenderRelayerApiKey[]; secrets: string[]; blockExplorerApiKeys: DefenderBlockExplorerApiKey[]; forkedNetworks: DefenderTenantNetwork[]; privateNetworks: DefenderTenantNetwork[]; }; export type YBlockExplorerApiKey = { 'key': string; 'key-hash'?: string; 'network': Network; }; //# sourceMappingURL=index.d.ts.map