import { RedisClientOptions, createClient } from 'redis';
import { Session } from '@shopify/shopify-api';
import { SessionStorage, SessionStorageMigratorOptions } from '@shopify/shopify-app-session-storage';
type RedisClient = ReturnType<typeof createClient>;
declare enum ShopifyStorageOption {
    sessionKeyPrefix = "sessionKeyPrefix",
    migratorOptions = "migratorOptions",
    onError = "onError"
}
export interface RedisSessionStorageOptions extends RedisClientOptions {
    [ShopifyStorageOption.sessionKeyPrefix]: string;
    [ShopifyStorageOption.migratorOptions]?: SessionStorageMigratorOptions;
    [ShopifyStorageOption.onError]?: (...args: any[]) => void;
}
export declare class RedisSessionStorage implements SessionStorage {
    static withCredentials(host: string, db: number, username: string, password: string, opts: Partial<RedisSessionStorageOptions>): RedisSessionStorage;
    readonly ready: Promise<void>;
    private internalInit;
    private options;
    private client;
    private migrator;
    constructor(urlOrClient: URL | string | RedisClient, opts?: Partial<RedisSessionStorageOptions>);
    storeSession(session: Session): Promise<boolean>;
    loadSession(id: string): Promise<Session | undefined>;
    deleteSession(id: string): Promise<boolean>;
    deleteSessions(ids: string[]): Promise<boolean>;
    findSessionsByShop(shop: string): Promise<Session[]>;
    disconnect(): Promise<void>;
    private addKeyToShopList;
    private removeKeyFromShopList;
    private init;
}
export {};
//# sourceMappingURL=redis.d.ts.map