"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FieldsSchema = exports.dataPoints = exports.fields = void 0;
const extensions_core_1 = require("@awell-health/extensions-core");
const zod_1 = require("zod");
exports.fields = {
    subscriptionGroupId: {
        id: 'subscriptionGroupId',
        label: 'Subscription Group ID',
        type: extensions_core_1.FieldType.STRING,
        required: true,
        description: 'The ID of your subscription group.',
    },
    externalUserId: {
        id: 'externalUserId',
        label: 'External User ID',
        type: extensions_core_1.FieldType.STRING,
        required: true,
        description: 'The ID of the user in your system that this message is being sent to.',
    },
    body: {
        id: 'body',
        label: 'Body',
        type: extensions_core_1.FieldType.TEXT,
        required: true,
        description: 'The body of the SMS.',
    },
    appId: {
        id: 'appId',
        label: 'App ID',
        type: extensions_core_1.FieldType.STRING,
        required: true,
        description: 'App id is the reference of the specific app.',
    },
    scheduleTime: {
        id: 'scheduleTime',
        label: 'Schedule Time',
        type: extensions_core_1.FieldType.DATE,
        required: true,
        description: 'The time to schedule the SMS to be sent. Must be a datetime as ISO 8601 string and time to send the message in UTC',
    },
    inPatientLocalTime: {
        id: 'inPatientLocalTime',
        label: 'In Patient Local Time',
        type: extensions_core_1.FieldType.BOOLEAN,
        required: false,
        description: "If true, the schedule time will be in the patient's local time.",
    },
    atOptimalTime: {
        id: 'atOptimalTime',
        label: 'At Optimal Time',
        type: extensions_core_1.FieldType.BOOLEAN,
        required: false,
        description: 'If true, the schedule time will be at the optimal time.',
    },
    linkShorteningEnabled: {
        id: 'linkShorteningEnabled',
        label: 'Link Shortening Enabled',
        type: extensions_core_1.FieldType.BOOLEAN,
        required: false,
        description: 'Use this field to turn on link shortening and campaign-level click tracking',
    },
    useClickTrackingEnabled: {
        id: 'useClickTrackingEnabled',
        label: 'Use Click Tracking Enabled',
        type: extensions_core_1.FieldType.BOOLEAN,
        required: false,
        description: 'If `Link Shortening Enabled` is true, use this field to turn on link shortening, and campaign-level and user-level click tracking',
    },
    campaignId: {
        id: 'campaignId',
        label: 'Campaign ID',
        type: extensions_core_1.FieldType.STRING,
        required: false,
        description: 'Optional but required if you wish to track campaign stats',
    },
    messageVariantionId: {
        id: 'messageVariantionId',
        label: 'Message Variantion ID',
        type: extensions_core_1.FieldType.STRING,
        required: false,
        description: 'Used when providing a campaign_id to specify which message variation this message should be tracked under',
    },
};
exports.dataPoints = {
    SMSDispatchId: {
        key: 'SMSDispatchId',
        valueType: 'string',
    },
    SMSScheduleId: {
        key: 'SMSScheduleId',
        valueType: 'string',
    },
};
exports.FieldsSchema = zod_1.z.object({
    subscriptionGroupId: zod_1.z.string().min(1),
    externalUserId: zod_1.z.string().min(1),
    body: zod_1.z.string().min(1),
    appId: zod_1.z.string().min(1),
    scheduleTime: extensions_core_1.DateTimeSchema,
    inPatientLocalTime: zod_1.z.boolean().optional(),
    atOptimalTime: zod_1.z.boolean().optional(),
    linkShorteningEnabled: zod_1.z.boolean().optional(),
    useClickTrackingEnabled: zod_1.z.boolean().optional(),
    campaignId: zod_1.z.string().optional(),
    messageVariantionId: zod_1.z.string().optional(),
});
//# sourceMappingURL=config.js.map