import { DetailKey, DynamoDbService, IInvoke, SnsService } from '@mbc-cqrs-serverless/core';
import { ConfigService } from '@nestjs/config';
import { CreateTaskDto } from './dto/create-task.dto';
import { TaskEntity } from './entity/task.entity';
import { TaskListEntity } from './entity/task-list.entity';
import { TaskStatusEnum } from './enums/status.enum';
import { TaskQueueEvent } from './event';
import { StepFunctionTaskEvent } from './event/task.sfn.event';
import { ITaskService } from './interfaces/task-service.interface';
export declare class TaskService implements ITaskService {
    private readonly dynamoDbService;
    private readonly snsService;
    private readonly config;
    private readonly logger;
    private readonly tableName;
    private readonly alarmTopicArn;
    constructor(dynamoDbService: DynamoDbService, snsService: SnsService, config: ConfigService);
    createTask(dto: CreateTaskDto, options: {
        invokeContext: IInvoke;
    }): Promise<TaskEntity>;
    createStepFunctionTask(dto: CreateTaskDto, options: {
        invokeContext: IInvoke;
    }): Promise<TaskEntity>;
    createSubTask(event: TaskQueueEvent): Promise<TaskEntity[]>;
    getAllSubTask(subTask: DetailKey): Promise<TaskEntity[]>;
    updateStepFunctionTask(key: DetailKey, attributes?: Record<string, any>, status?: string, notifyId?: string): Promise<void>;
    getTask(key: DetailKey): Promise<TaskEntity>;
    updateStatus(key: DetailKey, status: string, attributes?: {
        result?: any;
        error?: any;
    }, notifyId?: string): Promise<void>;
    updateSubTaskStatus(key: DetailKey, status: string, attributes?: {
        result?: any;
        error?: any;
    }, notifyId?: string): Promise<void>;
    listItemsByPk(tenantCode: string, type?: string, options?: {
        sk?: {
            skExpession: string;
            skAttributeValues: Record<string, string>;
            skAttributeNames?: Record<string, string>;
        };
        startFromSk?: string;
        limit?: number;
        order?: 'asc' | 'desc';
    }): Promise<TaskListEntity>;
    publishAlarm(event: TaskQueueEvent | StepFunctionTaskEvent, errorDetails: any): Promise<void>;
    formatTaskStatus(tasks: TaskEntity[]): Promise<{
        subTaskCount: number;
        subTaskSucceedCount: number;
        subTaskFailedCount: number;
        subTaskRunningCount: number;
        subTasks: {
            pk: string;
            sk: string;
            status: TaskStatusEnum;
        }[];
    }>;
    private countTaskStatus;
}
