import { CommandParser } from "../client/parser";
import { NumberReply } from "../RESP/types";
import { MSetArguments } from "./MSET";
export declare const SetMode: {
    /**
     * Only set if all keys exist
     */
    readonly XX: "XX";
    /**
     * Only set if none of the keys exist
     */
    readonly NX: "NX";
};
export type SetMode = (typeof SetMode)[keyof typeof SetMode];
export declare const ExpirationMode: {
    /**
     * Relative expiration (seconds)
     */
    readonly EX: "EX";
    /**
     * Relative expiration (milliseconds)
     */
    readonly PX: "PX";
    /**
     * Absolute expiration (Unix timestamp in seconds)
     */
    readonly EXAT: "EXAT";
    /**
     * Absolute expiration (Unix timestamp in milliseconds)
     */
    readonly PXAT: "PXAT";
    /**
     * Keep existing TTL
     */
    readonly KEEPTTL: "KEEPTTL";
};
export type ExpirationMode = (typeof ExpirationMode)[keyof typeof ExpirationMode];
type SetConditionOption = typeof SetMode.XX | typeof SetMode.NX;
type ExpirationOption = {
    type: typeof ExpirationMode.EX;
    value: number;
} | {
    type: typeof ExpirationMode.PX;
    value: number;
} | {
    type: typeof ExpirationMode.EXAT;
    value: number | Date;
} | {
    type: typeof ExpirationMode.PXAT;
    value: number | Date;
} | {
    type: typeof ExpirationMode.KEEPTTL;
};
export declare function parseMSetExArguments(parser: CommandParser, keyValuePairs: MSetArguments): void;
declare const _default: {
    /**
     * Constructs the MSETEX command.
     *
     * Atomically sets multiple string keys with a shared expiration in a single operation.
     *
     * @param parser - The command parser
     * @param keyValuePairs - Key-value pairs to set (array of tuples, flat array, or object)
     * @param options - Configuration for expiration and set modes
     * @see https://redis.io/commands/msetex/
     */
    readonly parseCommand: (this: void, parser: CommandParser, keyValuePairs: MSetArguments, options?: {
        expiration?: ExpirationOption;
        mode?: SetConditionOption;
    }) => void;
    readonly transformReply: () => NumberReply<0 | 1>;
};
export default _default;
//# sourceMappingURL=MSETEX.d.ts.map