import { WebhookContracts } from '../../contracts/webhook-contracts';
import { SharedModels } from '../shared/shared-models';
export declare namespace WebhookModels {
    type WebhookWorkflowStepOperation = 'publish' | 'unpublish' | 'archive' | 'restore' | 'upsert';
    type WebhookContentTypeActions = 'created' | 'changed' | 'deleted';
    type WebhookAssetActions = 'created' | 'changed' | 'metadata_changed' | 'deleted';
    type WebhookTaxonomyActions = 'created' | 'metadata_changed' | 'deleted' | 'term_created' | 'term_changed' | 'term_deleted' | 'terms_moved';
    type WebhookLanguageActions = 'created' | 'changed' | 'deleted';
    type WebhookContentItemActions = 'published' | 'unpublished' | 'created' | 'changed' | 'metadata_changed' | 'deleted' | 'workflow_step_changed';
    type WebhookManagementContentChangesOperations = 'archive' | 'create' | 'restore';
    type WebhookPreviewContentChangesOperations = 'archive' | 'upsert' | 'restore';
    type WebhookDeliveryTriggerSlots = 'published' | 'preview';
    type WebhookDeliveryTriggersEvents = 'all' | 'specific';
    type WebhookHealthStatus = 'unknown' | 'working' | 'failing' | 'dead';
    interface IAddWebhookData {
        name: string;
        secret: string;
        url: string;
        enabled?: boolean;
        headers?: IWebhookHeader[];
        delivery_triggers: {
            slot: WebhookDeliveryTriggerSlots;
            events: WebhookDeliveryTriggersEvents;
            asset?: WebhookContracts.IWebhookAssetContract;
            content_type?: WebhookContracts.IWebhookContentTypeContract;
            taxonomy?: WebhookContracts.IWebhookTaxonomyContract;
            language?: WebhookContracts.IWebhookLanguageContract;
            content_item?: WebhookContracts.IWebhookContentItemContract;
        };
    }
    class WebhookDeliveryTriggersContentType {
        enabled: boolean;
        actions?: WebhookContracts.WebhookAction<WebhookContentTypeActions>[];
        filters?: WebhookContracts.IContentTypeFilters;
        constructor(data: {
            enabled: boolean;
            actions?: WebhookContracts.WebhookAction<WebhookContentTypeActions>[];
            filters?: WebhookContracts.IContentTypeFilters;
        });
    }
    class WebhookDeliveryTriggersAsset {
        enabled: boolean;
        actions?: WebhookContracts.WebhookAction<WebhookAssetActions>[];
        constructor(data: {
            enabled: boolean;
            actions?: WebhookContracts.WebhookAction<WebhookAssetActions>[];
        });
    }
    class WebhookDeliveryTriggersTaxonomy {
        enabled: boolean;
        actions?: WebhookContracts.WebhookAction<WebhookTaxonomyActions>[];
        filters?: WebhookContracts.ITaxonomyFilters;
        constructor(data: {
            enabled: boolean;
            actions?: WebhookContracts.WebhookAction<WebhookTaxonomyActions>[];
            filters?: WebhookContracts.ITaxonomyFilters;
        });
    }
    class WebhookDeliveryTriggersLanguage {
        enabled: boolean;
        actions?: WebhookContracts.WebhookAction<WebhookLanguageActions>[];
        filters?: WebhookContracts.ILanguageFilters;
        constructor(data: {
            enabled: boolean;
            actions?: WebhookContracts.WebhookAction<WebhookLanguageActions>[];
            filters?: WebhookContracts.ILanguageFilters;
        });
    }
    class WebhookDeliveryTriggersContentItem {
        enabled: boolean;
        actions?: (WebhookContracts.WebhookAction<WebhookContentItemActions> & {
            transition_to?: WebhookContracts.ContentItemTransitionTo[];
        })[];
        filters?: WebhookContracts.IContentItemFilters;
        constructor(data: {
            enabled: boolean;
            actions?: (WebhookContracts.WebhookAction<WebhookContentItemActions> & {
                transition_to?: WebhookContracts.ContentItemTransitionTo[];
            })[];
            filters?: WebhookContracts.IContentItemFilters;
        });
    }
    class WebhookTransitionsTo {
        id: string;
        constructor(data: {
            id: string;
        });
    }
    interface IWebhookHeader {
        key: string;
        value: string;
    }
    class Webhook implements SharedModels.IBaseModel<WebhookContracts.IWebhookContract> {
        id: string;
        name: string;
        secret: string;
        url: string;
        enabled?: boolean;
        lastModified?: Date;
        healthStatus?: WebhookHealthStatus;
        headers?: IWebhookHeader[];
        deliveryTriggers: {
            slot: WebhookDeliveryTriggerSlots;
            events: WebhookDeliveryTriggersEvents;
            asset?: WebhookContracts.IWebhookAssetContract;
            contentType?: WebhookContracts.IWebhookContentTypeContract;
            taxonomy?: WebhookContracts.IWebhookTaxonomyContract;
            language?: WebhookContracts.IWebhookLanguageContract;
            contentItem?: WebhookContracts.IWebhookContentItemContract;
        };
        _raw: WebhookContracts.IWebhookContract;
        constructor(data: {
            id: string;
            name: string;
            secret: string;
            url: string;
            enabled?: boolean;
            lastModified?: Date;
            healthStatus?: WebhookHealthStatus;
            headers?: IWebhookHeader[];
            deliveryTriggers: {
                slot: WebhookDeliveryTriggerSlots;
                events: WebhookDeliveryTriggersEvents;
                asset?: WebhookContracts.IWebhookAssetContract;
                contentType?: WebhookContracts.IWebhookContentTypeContract;
                taxonomy?: WebhookContracts.IWebhookTaxonomyContract;
                language?: WebhookContracts.IWebhookLanguageContract;
                contentItem?: WebhookContracts.IWebhookContentItemContract;
            };
            _raw: WebhookContracts.IWebhookContract;
        });
    }
}
