/** Represents the desired behavior for managing the TTL on collection
 *  objects (dictionaries, lists, sets) in your cache.
 *
 *  For cache operations that modify a collection, there are a few things
 *  to consider.  The first time the collection is created, we need to
 *  set a TTL on it.  For subsequent operations that modify the collection
 *  you may choose to update the TTL in order to prolong the life of the
 *  cached collection object, or you may choose to leave the TTL unmodified
 *  in order to ensure that the collection expires at the original TTL.
 *
 *  The default behavior is to refresh the TTL (to prolong the life of the
 *  collection) each time it is written.  This behavior can be modified
 *  by calling CollectionTtl.withNoRefreshTtlOnUpdates().
 *
 *  A null TTL means to use the client's TTL.
 */
export declare class CollectionTtl {
    private readonly _ttlSeconds;
    private readonly _refreshTtl;
    /**
     * If refreshTtl is true, the client must update the collection's TTL
     * when it modifies a collection.
     * A null ttl means to use the client's TTL.
     * @param {number | null} [ttlSeconds=null]
     * @param {boolean} [refreshTtl=true]
     */
    constructor(ttlSeconds?: number | null, refreshTtl?: boolean);
    /** Time-to-live, in seconds.
     * @returns {number | null}
     */
    ttlSeconds(): number | null;
    /** Time-to-live, in milliseconds.
     * @returns {number | null}
     */
    ttlMilliseconds(): number | null;
    /** Whether or not to refresh a collection's TTL when it's modified.
     * @returns {boolean}
     */
    refreshTtl(): boolean;
    /** The default way to handle TTLs for collections. The client's default TTL
     *  will be used, and the TTL for the collection will be refreshed any
     *  time the collection is modified.
     * @constructor
     * @returns {CollectionTtl}
     */
    static fromCacheTtl(): CollectionTtl;
    /** Constructs a CollectionTtl with the specified TTL. The TTL
     *  for the collection will be refreshed any time the collection is
     *  modified.
     * @constructor
     * @param {number} [ttlSeconds]
     * @returns {CollectionTtl}
     */
    static of(ttlSeconds: number): CollectionTtl;
    /** Constructs a CollectionTtl with the specified TTL.
     *  Will only refresh if the TTL is provided.
     * @constructor
     * @param {number | null} [ttlSeconds=null]
     * @returns {CollectionTtl}
     */
    static refreshTtlIfProvided(ttlSeconds?: number | null): CollectionTtl;
    /** Copies the CollectionTtl, but it will refresh the TTL when
     *  the collection is modified.
     * @returns {CollectionTtl}
     */
    withRefreshTtlOnUpdates(): CollectionTtl;
    /** Copies the CollectionTTL, but the TTL will not be refreshed
     *  when the collection is modified. Use this if you want to ensure
     *  that your collection expires at the originally specified time, even
     *  if you make modifications to the value of the collection.
     * @returns {CollectionTtl}
     */
    withNoRefreshTtlOnUpdates(): CollectionTtl;
    /** A string represenation of the CollectionTtl for debugging purposes.
     * @return {CollectionTtl}
     */
    toString(): string;
}
