import { AppContext } from '../types.js';
import { RunViewByIDInput } from '../generic/RunViewResolver.js';
import { ResolverBase } from '../generic/ResolverBase.js';
export declare class CommunicationProviderMessageType {
    ID: number;
    CommunicationProviderID: number;
    CommunicationBaseMessageTypeID: number;
    Name: string;
    Status: string;
    AdditionalAttributes: string;
    _mj_CreatedAt: Date;
    _mj_UpdatedAt: Date;
    CommunicationProvider?: string;
    CommunicationBaseMessageType?: string;
}
export declare class TemplateInputType {
    ID: number;
    Name: string;
    Description: string;
    UserPrompt?: string;
    CategoryID?: number;
    UserID: number;
    ActiveAt?: Date;
    DisabledAt?: Date;
    IsActive: boolean;
    _mj_CreatedAt: Date;
    _mj_UpdatedAt: Date;
    Category?: string;
    User?: string;
}
export declare class CommunicationMessageInput {
    /**
     * The type of message to send
     */
    MessageType: CommunicationProviderMessageType;
    /**
     * The sender of the message, typically an email address but can be anything that is provider-specific for example for a provider that is a social
     * media provider, it might be a user's social media handle
     */
    From: string;
    /**
     * The recipient of the message, typically an email address but can be anything that is provider-specific for example for a provider that is a social
     * media provider, it might be a user's social media handle
     */
    To: string;
    /**
     * The body of the message, used if BodyTemplate is not provided.
     */
    Body?: string;
    /**
     * Optional, when provided, Body is ignored and the template is used to render the message. In addition,
     * if BodyTemplate is provided it will be used to render the Body and if the template has HTML content it will
     * also be used to render the HTMLBody
     */
    BodyTemplate?: TemplateInputType;
    /**
     * The HTML body of the message
     */
    HTMLBody?: string;
    /**
     * Optional, when provided, HTMLBody is ignored and the template is used to render the message. This OVERRIDES
     * the BodyTemplate's HTML content even if BodyTemplate is provided. This allows for flexibility in that you can
     * specify a completely different HTMLBodyTemplate and not just relay on the TemplateContent of the BodyTemplate having
     * an HTML option.
     */
    HTMLBodyTemplate?: TemplateInputType;
    /**
     * The subject line for the message, used if SubjectTemplate is not provided and only supported by some providers
     */
    Subject?: string;
    /**
     * Optional, when provided, Subject is ignored and the template is used to render the message
     */
    SubjectTemplate?: TemplateInputType;
    /**
     * Optional, any context data that is needed to render the message template
     */
    ContextData?: any;
}
export declare class RunEntityCommunicationResultType {
    Success: boolean;
    ErrorMessage?: string;
    /**
     * Optional, any context data that is needed to render the message template
     */
    Results?: any;
}
export declare class ReportResolver extends ResolverBase {
    RunEntityCommunicationByViewID(entityID: string, runViewByIDInput: RunViewByIDInput, providerName: string, providerMessageTypeName: string, message: CommunicationMessageInput, previewOnly: boolean, includeProcessedMessages: boolean, { userPayload }: AppContext): Promise<RunEntityCommunicationResultType>;
}
//# sourceMappingURL=EntityCommunicationsResolver.d.ts.map