import { DataEntity, DetailKey, DynamoDbService, IInvoke } from '@mbc-cqrs-serverless/core';
import { GenerateFormattedSequenceDto, GenerateFormattedSequenceWithProvidedSettingDto, GenerateSequenceDto } from './dto';
import { SequenceEntity } from './entities/sequence.entity';
import { ISequenceService } from './interfaces/sequence-service.interface';
import { SequenceMasterDataProvider } from './sequence-master-factory';
export declare class SequencesService implements ISequenceService {
    private readonly dynamoDbService;
    private readonly masterDataProvider;
    private readonly logger;
    private readonly tableName;
    constructor(dynamoDbService: DynamoDbService, masterDataProvider: SequenceMasterDataProvider);
    /**
     * @deprecated This method is deprecated at V0.2.
     */
    getCurrentSequence(key: DetailKey): Promise<DataEntity>;
    /**
     * @deprecated This method is deprecated at V0.2.
     * Seq data structure
     * - pk: SEQ#tenantCode
     * - sk: typeCode#rotateValue ( e.x: `user#20230401` )
     * - code: typeCode#rotateValue
     * - name: rotateBy ( e.x: `daily` )
     * - tenant_code: tenantCode
     * - type: typeCode
     * - seq: sequence value ( atomic counter )
     */
    genNewSequence(dto: GenerateSequenceDto, options: {
        invokeContext: IInvoke;
    }): Promise<DataEntity>;
    /**
     * Seq data structure
     * - pk: SEQ#tenantCode
     * - sk: typeCode#code1#code2#code3#code4#code5rotateValue ( e.x: `user#20230401` )
     * - code: typeCode#rotateValue
     * - name: rotateBy ( e.x: `daily` )
     * - tenant_code: tenantCode
     * - type: typeCode
     * - seq: sequence value ( atomic counter )
     *  - requestId: requestId
     * - createdAt: createdAt
     * - createdBy: createdBy
     * - createdIp: createdIp
     * - attributes: {
     *    formatted_no: formattedNo ( e.x: `2023-04-01-0001` )
     *    fiscal_year: fiscalYear
     *    issued_at: issuedAt
     * }
     */
    generateSequenceItem(dto: GenerateFormattedSequenceDto, options?: {
        invokeContext: IInvoke;
    }): Promise<SequenceEntity>;
    generateSequenceItemWithProvideSetting(dto: GenerateFormattedSequenceWithProvidedSettingDto, options?: {
        invokeContext: IInvoke;
    }): Promise<SequenceEntity>;
    private getRotateValue;
    private isIncrementNo;
    private getFiscalYear;
    private createFormatDict;
    private createFormattedNo;
    private extractPaddingInfo;
}
