import { CommandParser } from '../client/parser';
import { RedisArgument, TuplesReply, NumberReply } from '../RESP/types';
export interface IncrExOptions {
    /**
     * Optional explicit integer increment (default: 1). Pass as `string` to
     * preserve precision past `Number.MAX_SAFE_INTEGER` (Redis integers are
     * 64-bit), e.g. `{ by: '9223372036854775000' }`.
     */
    by?: RedisArgument | number;
    lowerBound?: RedisArgument | number;
    upperBound?: RedisArgument | number;
    /**
     * Out-of-bounds policy.
     * - `true`  — clamp the result to `lowerBound`/`upperBound` (or to type limits if no explicit bound).
     * - `false` or omitted (default) — the operation is rejected silently: the reply is
     *   `[currentValue, 0]` and the key's value and TTL are left unchanged. An
     *   `actualIncrement` of `0` always indicates a rejected out-of-bounds operation.
     */
    saturate?: boolean;
    expiration?: {
        type: 'EX' | 'PX' | 'EXAT' | 'PXAT';
        value: number;
        ENX?: boolean;
    } | {
        type: 'PERSIST';
    };
}
declare const _default: {
    readonly parseCommand: (this: void, parser: CommandParser, key: RedisArgument, options?: IncrExOptions) => void;
    readonly transformReply: () => TuplesReply<[NumberReply, NumberReply]>;
};
export default _default;
//# sourceMappingURL=INCREX.d.ts.map