import type { IntegrationAccountRequirement, TriggerDefinition } from "../types" const VERCEL_DEPLOYMENT_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: ["deployment:read"], }, ], serviceId: "vercel", } as const satisfies IntegrationAccountRequirement const VERCEL_DOMAIN_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: ["domain:read"], }, ], serviceId: "vercel", } as const satisfies IntegrationAccountRequirement const VERCEL_OAUTH_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: [], }, ], serviceId: "vercel", } as const satisfies IntegrationAccountRequirement const VERCEL_INTEGRATION_CONFIGURATION_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: [], }, ], serviceId: "vercel", } as const satisfies IntegrationAccountRequirement const VERCEL_PROJECT_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: ["project:read"], }, ], serviceId: "vercel", } as const satisfies IntegrationAccountRequirement const VERCEL_PROJECT_DOMAIN_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: ["domain:read"], }, ], serviceId: "vercel", } as const satisfies IntegrationAccountRequirement const VERCEL_PROJECT_ENVIRONMENT_VARIABLE_ACCOUNT = { connectionOptions: [ { connectionMethodId: "oauth", requiredScopes: ["global-project-env-vars:read"], }, ], serviceId: "vercel", } as const satisfies IntegrationAccountRequirement export const vercelTriggerDefinitions = { vercelDeployment: { account: VERCEL_DEPLOYMENT_ACCOUNT, name: "Vercel deployment event", type: "vercel.deployment", }, vercelDeploymentCheckRerequested: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.checkRerequested", }, vercelDeploymentCleanup: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.cleanup", }, vercelDeploymentCanceled: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.canceled", }, vercelDeploymentCreated: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.created", }, vercelDeploymentFailed: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.failed", }, vercelDeploymentPromoted: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.promoted", }, vercelDeploymentRollback: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.rollback", }, vercelDeploymentIntegrationActionCancel: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.integrationActionCancel", }, vercelDeploymentIntegrationActionCleanup: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.integrationActionCleanup", }, vercelDeploymentIntegrationActionStart: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.integrationActionStart", }, vercelDeploymentReady: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.ready", }, vercelDeploymentSucceeded: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.deployment.succeeded", }, vercelDomain: { account: VERCEL_DOMAIN_ACCOUNT, name: "Vercel domain event", type: "vercel.domain", }, vercelDomainCreated: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.created", }, vercelDomainAutoRenewChanged: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.autoRenewChanged", }, vercelDomainCertificateAdd: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.certificateAdd", }, vercelDomainCertificateAddFailed: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.certificateAddFailed", }, vercelDomainCertificateDeleted: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.certificateDeleted", }, vercelDomainCertificateRenew: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.certificateRenew", }, vercelDomainCertificateRenewFailed: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.certificateRenewFailed", }, vercelDomainDnsRecordsChanged: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.dnsRecordsChanged", }, vercelDomainRenewal: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.renewal", }, vercelDomainRenewalFailed: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.renewalFailed", }, vercelDomainTransferInCompleted: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.transferInCompleted", }, vercelDomainTransferInFailed: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.transferInFailed", }, vercelDomainTransferInStarted: { account: VERCEL_DOMAIN_ACCOUNT, type: "vercel.domain.transferInStarted", }, vercelIntegrationConfiguration: { account: VERCEL_INTEGRATION_CONFIGURATION_ACCOUNT, name: "Vercel integration configuration event", type: "vercel.integration-configuration", }, vercelIntegrationConfigurationPermissionUpgraded: { account: VERCEL_INTEGRATION_CONFIGURATION_ACCOUNT, name: "Vercel integration permission upgraded", type: "vercel.integration-configuration.permissionUpgraded", }, vercelIntegrationConfigurationRemoved: { account: VERCEL_INTEGRATION_CONFIGURATION_ACCOUNT, type: "vercel.integration-configuration.removed", }, vercelIntegrationConfigurationScopeChangeConfirmed: { account: VERCEL_INTEGRATION_CONFIGURATION_ACCOUNT, name: "Vercel integration scope change confirmed", type: "vercel.integration-configuration.scopeChangeConfirmed", }, vercelIntegrationConfigurationTransferred: { account: VERCEL_INTEGRATION_CONFIGURATION_ACCOUNT, type: "vercel.integration-configuration.transferred", }, vercelIntegrationResource: { account: VERCEL_OAUTH_ACCOUNT, name: "Vercel integration resource event", type: "vercel.integration-resource", }, vercelIntegrationResourceProjectConnected: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.integration-resource.projectConnected", }, vercelIntegrationResourceProjectDisconnected: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.integration-resource.projectDisconnected", }, vercelProject: { account: VERCEL_PROJECT_ACCOUNT, name: "Vercel project event", type: "vercel.project", }, vercelProjectCreated: { account: VERCEL_PROJECT_ACCOUNT, type: "vercel.project.created", }, vercelProjectDomain: { account: VERCEL_PROJECT_DOMAIN_ACCOUNT, name: "Vercel project domain event", type: "vercel.project-domain", }, vercelProjectDomainCreated: { account: VERCEL_PROJECT_DOMAIN_ACCOUNT, type: "vercel.project-domain.created", }, vercelProjectDomainDeleted: { account: VERCEL_PROJECT_DOMAIN_ACCOUNT, type: "vercel.project-domain.deleted", }, vercelProjectDomainMoved: { account: VERCEL_PROJECT_DOMAIN_ACCOUNT, type: "vercel.project-domain.moved", }, vercelProjectDomainUnverified: { account: VERCEL_PROJECT_DOMAIN_ACCOUNT, type: "vercel.project-domain.unverified", }, vercelProjectDomainUpdated: { account: VERCEL_PROJECT_DOMAIN_ACCOUNT, type: "vercel.project-domain.updated", }, vercelProjectDomainVerified: { account: VERCEL_PROJECT_DOMAIN_ACCOUNT, type: "vercel.project-domain.verified", }, vercelProjectEnvironmentVariable: { account: VERCEL_PROJECT_ENVIRONMENT_VARIABLE_ACCOUNT, name: "Vercel project environment variable event", type: "vercel.project-environment-variable", }, vercelProjectEnvironmentVariableCreated: { account: VERCEL_PROJECT_ENVIRONMENT_VARIABLE_ACCOUNT, type: "vercel.project-environment-variable.created", }, vercelProjectEnvironmentVariableDeleted: { account: VERCEL_PROJECT_ENVIRONMENT_VARIABLE_ACCOUNT, type: "vercel.project-environment-variable.deleted", }, vercelProjectEnvironmentVariableUpdated: { account: VERCEL_PROJECT_ENVIRONMENT_VARIABLE_ACCOUNT, type: "vercel.project-environment-variable.updated", }, vercelProjectRemoved: { account: VERCEL_PROJECT_ACCOUNT, type: "vercel.project.removed", }, vercelProjectRenamed: { account: VERCEL_PROJECT_ACCOUNT, type: "vercel.project.renamed", }, vercelRollingRelease: { account: VERCEL_DEPLOYMENT_ACCOUNT, name: "Vercel rolling release event", type: "vercel.rolling-release", }, vercelRollingReleaseApproved: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.rolling-release.approved", }, vercelRollingReleaseCompleted: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.rolling-release.completed", }, vercelRollingReleaseAborted: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.rolling-release.aborted", }, vercelRollingReleaseStarted: { account: VERCEL_DEPLOYMENT_ACCOUNT, type: "vercel.rolling-release.started", }, vercelFeatureFlag: { account: VERCEL_OAUTH_ACCOUNT, name: "Vercel feature flag event", type: "vercel.feature-flag", }, vercelFeatureFlagCreated: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.feature-flag.created", }, vercelFeatureFlagUpdated: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.feature-flag.updated", }, vercelFeatureFlagDeleted: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.feature-flag.deleted", }, vercelFeatureFlagSegmentCreated: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.feature-flag.segmentCreated", }, vercelFeatureFlagSegmentUpdated: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.feature-flag.segmentUpdated", }, vercelFeatureFlagSegmentDeleted: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.feature-flag.segmentDeleted", }, vercelAlertTriggered: { account: VERCEL_OAUTH_ACCOUNT, type: "vercel.alert.triggered", }, } as const satisfies Record