import { CacheBasic, CacheBasicDef, CacheBasicSecure, CacheCommandDisabledLambda, CacheCommandIgnoredLambda, CmdBasicCopy, CmdBasicGetTimestamp, CmdBasicGetTtl, CmdBasicInfoResult, CmdBasicSetBase, CmdBasicSetMoreBase, CmdBasicSetMoreWithProp, CmdBasicSetTimestamp, CmdBasicSetTtl, CmdBasicSetWithKey, InvalidatorType } from "./types";
import { Id, KeyAny, KeyAnyArray, KeyId, TR } from "../types";
import { CacheFormat } from "../format";
import { CacheInvalidator, CacheInvalidatorResult } from "../invalidator";
import { CacheChannel, CacheChannelProp, CacheChannelPropSecure } from "../channel";
import { CacheOptCopy, CacheResulCopy, CacheResulSet, CacheResultBoolean, CacheResultGetExpiry, CacheResultNumber, CacheResultPersist, CacheResultSetExpiry } from "../command";
import { ExpiryMode } from "../literal";
export declare abstract class CacheBasicAbstract<A extends TR, N extends Id> implements CacheBasic<A, N>, CacheBasicSecure<A, N> {
    protected readonly channel: CacheChannel<A, N>;
    protected format: CacheFormat<A, N>;
    protected invalidator: CacheInvalidator<A>;
    protected prop: Readonly<CacheChannelProp<A>>;
    protected check: CacheChannelPropSecure<A>;
    protected ignoredMap: Map<InvalidatorType, CacheCommandIgnoredLambda<A, unknown>>;
    protected disabledMap: Map<InvalidatorType, CacheCommandDisabledLambda<A, unknown>>;
    protected constructor(channel: CacheChannel<A, N>);
    private _fillInvalidators;
    private _formatRawValue;
    private _afterSetMore;
    private _setDocsMore;
    private _setRawsMore;
    /** @inheritDoc */
    delete(key: KeyAny): Promise<CacheInvalidatorResult<A, CacheResultBoolean>>;
    /** @inheritDoc */
    deleteMore(keys: KeyAnyArray): Promise<CacheInvalidatorResult<A, CacheResultNumber>>;
    /** @inheritDoc */
    unlink(key: KeyAny): Promise<CacheInvalidatorResult<A, CacheResultBoolean>>;
    /** @inheritDoc */
    unlinkMore(keys: KeyAnyArray): Promise<CacheInvalidatorResult<A, CacheResultNumber>>;
    /** @inheritDoc */
    exists(key: KeyAny): Promise<CacheInvalidatorResult<A, CacheResultBoolean>>;
    /** @inheritDoc */
    existMore(keys: KeyAnyArray): Promise<CacheInvalidatorResult<A, CacheResultNumber>>;
    /** @inheritDoc */
    getDoc(key: KeyAny): Promise<CacheInvalidatorResult<A, A>>;
    /** @inheritDoc */
    listDocs(keys: KeyAnyArray): Promise<CacheInvalidatorResult<A, Array<A>>>;
    /** @inheritDoc */
    getRaw<T>(key: KeyAny): Promise<CacheInvalidatorResult<A, T>>;
    /** @inheritDoc */
    listRaws<T>(keys: KeyAnyArray): Promise<CacheInvalidatorResult<A, Array<T>>>;
    setDoc(p1: KeyAny | Partial<A>, p2?: Partial<A> | CmdBasicSetWithKey<A>, p3?: CmdBasicSetBase): Promise<CacheInvalidatorResult<A, Partial<A> | CacheResulSet>>;
    setRaw<T extends string | number>(key: KeyAny, value: T, opt?: CmdBasicSetBase): Promise<CacheInvalidatorResult<A, string | CacheResulSet>>;
    setDocsMore(values: Array<Partial<A>> | Record<KeyId, Partial<A>> | Map<KeyId, Partial<A>> | Array<[KeyId, Partial<A>]>, opt?: CmdBasicSetMoreWithProp<A> | CmdBasicSetMoreBase): Promise<CacheInvalidatorResult<A, CacheResulSet>>;
    setRawsMore<T extends string | number>(values: Record<KeyId, T> | Map<KeyId, T> | Array<[KeyId, T]>, opt?: CmdBasicSetMoreBase): Promise<CacheInvalidatorResult<A, CacheResulSet>>;
    /** @inheritDoc */
    copy(source: KeyAny, destination: KeyAny, opt?: CmdBasicCopy): Promise<CacheInvalidatorResult<A, CacheResulCopy>>;
    /** @inheritDoc */
    getType(key: KeyAny): Promise<CacheInvalidatorResult<A, string>>;
    /** @inheritDoc */
    getTypeMore(keys: KeyAnyArray): Promise<CacheInvalidatorResult<A, Array<string>>>;
    /** @inheritDoc */
    getInfo(key: KeyAny): Promise<CmdBasicInfoResult>;
    /** @inheritDoc */
    getTimestamp(key: KeyAny, opt?: CmdBasicGetTimestamp): Promise<CacheInvalidatorResult<A, CacheResultGetExpiry>>;
    /** @inheritDoc */
    getTimestampMore(keys: KeyAnyArray, opt?: CmdBasicGetTimestamp): Promise<CacheInvalidatorResult<A, Array<CacheResultGetExpiry>>>;
    /** @inheritDoc */
    getTtl(key: KeyAny, opt?: CmdBasicGetTtl): Promise<CacheInvalidatorResult<A, CacheResultGetExpiry>>;
    /** @inheritDoc */
    getTtlMore(keys: KeyAnyArray, opt?: CmdBasicGetTtl): Promise<CacheInvalidatorResult<A, Array<CacheResultGetExpiry>>>;
    /** @inheritDoc */
    setTimestamp(key: KeyAny, opt?: CmdBasicSetTimestamp): Promise<CacheInvalidatorResult<A, CacheResultSetExpiry>>;
    /** @inheritDoc */
    setTimestampMore(keys: KeyAnyArray, opt?: CmdBasicSetTtl): Promise<CacheInvalidatorResult<A, Array<CacheResultSetExpiry>>>;
    /** @inheritDoc */
    setTtl(key: KeyAny, opt?: CmdBasicSetTtl): Promise<CacheInvalidatorResult<A, CacheResultSetExpiry>>;
    /** @inheritDoc */
    setTtlMore(keys: KeyAnyArray, opt?: CmdBasicSetTtl): Promise<CacheInvalidatorResult<A, Array<CacheResultSetExpiry>>>;
    /** @inheritDoc */
    persist(key: KeyAny): Promise<CacheInvalidatorResult<A, CacheResultPersist>>;
    /** @inheritDoc */
    persistMore(keys: KeyAnyArray): Promise<CacheInvalidatorResult<A, Array<CacheResultPersist>>>;
    get $flat(): CacheBasicDef;
    get $secure(): CacheBasicSecure<A, N>;
    get $back(): CacheBasic<A, N>;
    $init(): void;
    abstract $copy(source: string, destination: string, opt?: CacheOptCopy): Promise<boolean>;
    abstract $get(key: string): Promise<string>;
    abstract $getMore(keys: Array<string>): Promise<Array<string>>;
    abstract $exists(key: string): Promise<boolean>;
    abstract $existMore(keys: Array<string>): Promise<number>;
    abstract $set(key: string, value: string, opt?: CmdBasicSetBase): Promise<string>;
    abstract $setMore(records: Record<string, string>): Promise<string>;
    abstract $delete(key: string): Promise<boolean>;
    abstract $deleteMore(keys: Array<string>): Promise<number>;
    abstract $getTimestamp(key: string): Promise<CacheResultGetExpiry>;
    abstract $getTimestampMore(keys: Array<string>): Promise<Array<CacheResultGetExpiry>>;
    abstract $getTtl(key: string): Promise<CacheResultGetExpiry>;
    abstract $getTtlMore(keys: Array<string>): Promise<Array<CacheResultGetExpiry>>;
    abstract $type(key: string): Promise<string>;
    abstract $typeMore(keys: Array<string>): Promise<Array<string>>;
    abstract $persist(key: string): Promise<CacheResultPersist>;
    abstract $persistMore(keys: Array<string>): Promise<Array<CacheResultPersist>>;
    abstract $setTimestamp(key: string, milliseconds: number, mode?: ExpiryMode): Promise<CacheResultSetExpiry>;
    abstract $setTimestampMore(keys: Array<string>, milliseconds: number, mode?: ExpiryMode): Promise<Array<CacheResultSetExpiry>>;
    abstract $setTtl(key: string, milliseconds: number, mode?: ExpiryMode): Promise<CacheResultSetExpiry>;
    abstract $setTtlMore(keys: Array<string>, milliseconds: number, mode?: ExpiryMode): Promise<Array<CacheResultSetExpiry>>;
    abstract $unlink(key: string): Promise<boolean>;
    abstract $unlinkMore(keys: Array<string>): Promise<number>;
}
