import { AssignedType } from './job';
import { ExtendedPropertyTableDefinition, PortalType } from './extendedPropertyDefinition';
import { Schedule, TimeType } from './schedule';
import { Attachment, KeyValue } from './shared';
export declare enum JobTemplateState {
    Draft = "Draft",
    Active = "Active",
    Automated = "Automated",
    Retired = "Retired"
}
export declare enum JobStartDateType {
    CreationDate = "CreationDate",
    SpecificDate = "SpecificDate"
}
export declare enum ActivityType {
    CloseJob = "CloseJob",
    CreateJob = "CreateJob",
    AddComment = "AddComment",
    AssignJob = "AssignJob",
    SetCurrentStep = "SetCurrentStep",
    DeleteJob = "DeleteJob"
}
export declare enum ActivityAction {
    Email = "Email",
    WebRequest = "WebRequest"
}
export interface Activity {
    typeName: ActivityType;
    actionName: ActivityAction;
    templateId: string;
}
export interface AutomatedCreation {
    automationId: string;
    automationName: string;
    automationType: AutomationType;
    createdBy?: string;
}
export interface AutomatedCreationDetails extends AutomatedCreation {
    enabled: boolean;
    details: string;
}
export declare enum AutomationType {
    Scheduled = "Scheduled",
    Webhook = "Webhook"
}
export interface AutomatedCreationDetailsInfo {
    timeType: TimeType;
    month?: number;
    dayOfWeek?: AutomatedCreationDayOfWeekType;
    dayOfMonth?: number;
    hour?: number;
    minutes?: number;
    maxOccurrences?: number;
    endDate?: Date;
}
export declare enum WebhookHeaderSecurityType {
    HMAC = "HMAC",
    SecretKey = "SecretKey"
}
export declare enum WebhookHeaderSignatureFormat {
    Base64 = "Base64",
    Hex = "Hex"
}
export interface WebhookDetailsInfo {
    username: string;
    password: string;
    fallbackUsername: string;
    fallbackPassword: string;
    headerSecret?: KeyValue;
    attachment: Attachment;
    extractChanges?: boolean;
    outputValues: KeyValue[];
    headerSecurityType?: WebhookHeaderSecurityType;
    headerSignatureFormat?: WebhookHeaderSignatureFormat;
}
export interface AutomatedCreationAdd {
    automationName: string;
    automationType: AutomationType;
    enabled: boolean;
    details: string;
}
export interface AutomatedCreationUpdate {
    automationId: string;
    automationName?: string;
    enabled?: boolean;
    details?: string;
}
export interface AutomatedCreationChanges {
    adds?: AutomatedCreationAdd[];
    updates?: AutomatedCreationUpdate[];
    deletes?: string[];
}
export declare enum AutomatedCreationDayOfWeekType {
    SUNDAY = 1,
    MONDAY = 2,
    TUESDAY = 3,
    WEDNESDAY = 4,
    THURSDAY = 5,
    FRIDAY = 6,
    SATURDAY = 7
}
export interface JobTemplate {
    jobTemplateId: string;
    jobTemplateName: string;
    description?: string;
    category?: string;
    diagramName?: string;
    state: string;
}
export interface JobTemplateDetails {
    jobTemplateId?: string;
    jobTemplateName: string;
    description?: string;
    category?: string;
    state?: JobTemplateState;
    diagramId?: string;
    diagramName?: string;
    defaultJobName?: string;
    defaultDescription?: string;
    defaultAssignedTo?: string;
    defaultAssignedType?: AssignedType;
    jobStartDateType?: JobStartDateType;
    defaultStartDate?: Date;
    defaultDueDate?: Date;
    defaultJobDuration?: number;
    defaultPriority: string;
    defaultStatus?: string;
    defaultFinalStatus?: string;
    extendedPropertyTableDefinitions?: Array<ExtendedPropertyTableDefinition>;
    activities?: Activity[];
}
export interface Diagram {
    active: boolean;
    diagramId: string;
    diagramName: string;
    description?: string;
    draft: boolean;
}
export interface UpgradedDiagram {
    failedDataSourceNames: string[];
    failedStepIds: string[];
    modifiedDataSourceNames: string[];
    modifiedStepIds: string[];
    transformedDiagram: DiagramDetails;
}
export interface DiagramDetails extends Diagram {
    diagramVersion: number;
    initialStepId: string;
    initialStepName: string;
    steps: Step[];
    dataSources: DataSource[];
    useCentralizedDataReferences?: boolean;
    centralizedDataReferences?: (FeatureServiceDataReference | SurveyDataReference | GeoprocessingServiceDataReference | WebMapDataReference | ProProjectDataReference | ProMapItemDataReference | ProSceneItemDataReference | ProTaskItemDataReference | ProLayoutItemDataReference | ProSystemToolboxItemDataReference | ProCommandDataReference)[];
    annotations: Annotation[];
    displayGrid: boolean;
}
export interface Step {
    id: string;
    name: string;
    description?: string;
    stepTemplateId?: string;
    automatic: boolean;
    schedule?: Schedule;
    proceedNext: boolean;
    canSkip: boolean;
    position: string;
    shape: number;
    color?: string;
    outlineColor?: string;
    labelColor?: string;
    action: StepAction;
    paths: Array<StepPath>;
    helpUrl?: string;
    helpText?: string;
    helpLink?: string;
    encodeHelpLink?: boolean;
}
export declare enum DataSourceType {
    Unknown = "Unknown",
    Branch = "Branch"
}
export interface DataSource {
    name: string;
    url: string;
    sourceType: DataSourceType;
}
export declare enum DataReferenceType {
    FeatureService = "FeatureService",
    Survey = "Survey",
    GeoprocessingService = "GeoprocessingService",
    WebMap = "WebMap",
    ProProject = "ProProject",
    ProMapItem = "ProMapItem",
    ProSceneItem = "ProSceneItem",
    ProTaskItem = "ProTaskItem",
    ProLayoutItem = "ProLayoutItem",
    ProSystemToolboxItem = "ProSystemToolboxItem",
    ProCommand = "ProCommand"
}
export declare enum DataReferenceCapabilities {
    SupportsBranchVersioning = "SupportsBranchVersioning",
    SupportsCreateReplica = "SupportsCreateReplica",
    SupportsDataQuality = "SupportsDataQuality"
}
export interface DataReferencePortalItemInfo {
    itemId: string;
    portalType?: PortalType;
    portalUrl?: string;
}
export interface FeatureServiceDataReference extends DataReference {
    isValidated: boolean;
    capabilities?: DataReferenceCapabilities[];
    portalItem: DataReferencePortalItemInfo;
    referenceType: DataReferenceType.FeatureService;
}
export interface SurveyDataReference extends DataReference {
    isValidated: boolean;
    portalItem: DataReferencePortalItemInfo;
    referenceType: DataReferenceType.Survey;
}
export interface GeoprocessingServiceDataReference extends DataReference {
    isValidated: boolean;
    acceptsToken?: boolean;
    standaloneGPUrl?: string;
    portalItem?: DataReferencePortalItemInfo;
    referenceType: DataReferenceType.GeoprocessingService;
}
export interface WebMapDataReference extends DataReference {
    isValidated: boolean;
    portalItem: DataReferencePortalItemInfo;
    referenceType: DataReferenceType.WebMap;
}
export interface ProProjectDataReference extends DataReference {
    isValidated: boolean;
    portalItem: DataReferencePortalItemInfo;
    referenceType: DataReferenceType.ProProject;
}
export interface ProMapItemDataReference extends Omit<DataReference, 'alias'> {
    proItemName: string;
    referenceType: DataReferenceType.ProMapItem;
}
export interface ProSceneItemDataReference extends Omit<DataReference, 'alias'> {
    proItemName: string;
    referenceType: DataReferenceType.ProSceneItem;
}
export interface ProTaskItemDataReference extends Omit<DataReference, 'alias'> {
    proItemName: string;
    referenceType: DataReferenceType.ProTaskItem;
}
export interface ProLayoutItemDataReference extends Omit<DataReference, 'alias'> {
    proItemName: string;
    referenceType: DataReferenceType.ProLayoutItem;
}
export interface ProSystemToolboxItemDataReference extends Omit<DataReference, 'alias'> {
    proItemName: string;
    referenceType: DataReferenceType.ProSystemToolboxItem;
}
export interface ProCommandDataReference extends DataReference {
    command: string;
    referenceType: DataReferenceType.ProCommand;
}
export interface DataReference {
    id: string;
    alias: string;
}
export declare enum StepActionType {
    AdvancedAssignment = "AdvancedAssignment",
    Attachment = "Attachment",
    ClaimVersion = "ClaimVersion",
    Cleanup = "Cleanup",
    CreateJob = "CreateJob",
    CreateReplica = "CreateReplica",
    CreateVersion = "CreateVersion",
    DataQualityRules = "DataQualityRules",
    DefineLocation = "DefineLocation",
    Email = "Email",
    GPService = "GPService",
    JobProperties = "JobProperties",
    JobProperties1M = "JobProperties1M",
    Manual = "Manual",
    OpenApp = "OpenApp",
    ProMappingAndTask = "ProMappingAndTask",
    ProGPTool = "ProGPTool",
    ReconcilePost = "ReconcilePost",
    SetVersion = "SetVersion",
    Survey = "Survey",
    Question = "Question",
    Unknown = "",
    WebRequest = "WebRequest"
}
export interface StepAction {
    actionType: StepActionType;
    args?: any;
}
export interface StepPath {
    nextStep: string;
    expression?: string;
    label?: string;
    assignedTo?: string;
    assignedType: AssignedType;
    isAssignedToCustomExpression?: boolean;
    forceGroupAssignment?: boolean;
    points: Array<Point>;
    ports: Array<string>;
    status?: string;
    notifications: Array<string>;
    lineColor?: string;
}
export interface Point {
    x: number;
    y: number;
}
export interface Annotation {
    position: string;
    color?: string;
    outlineColor?: string;
    labelColor?: string;
    text: string;
}
