import z from 'zod'; export declare const SessionOptions: z.ZodObject<{ /** * cookie key * Default is `koa.sess` */ key: z.ZodDefault; /** * maxAge in ms * Default is `86400000`, one day * If set to 'session' will result in a cookie that expires when session/browser is closed * * Warning: If a session cookie is stolen, this cookie will never expire */ maxAge: z.ZodOptional]>>; /** * automatically commit headers * Default is `true` */ autoCommit: z.ZodDefault; /** * cookie value can overwrite or not * Default is `true` */ overwrite: z.ZodDefault; /** * httpOnly or not * Default is `true` */ httpOnly: z.ZodDefault; /** * signed or not * Default is `true` */ signed: z.ZodDefault; /** * Force a session identifier cookie to be set on every response. * The expiration is reset to the original `maxAge`, resetting the expiration countdown. * Default is `false` */ rolling: z.ZodDefault; /** * renew session when session is nearly expired, so we can always keep user logged in. * Default is `false` */ renew: z.ZodDefault; /** * secure cookie * Default is `undefined`, will be set to `true` if the connection is over HTTPS, otherwise `false`. */ secure: z.ZodOptional; /** * session cookie sameSite options * Default is `undefined`, meaning don't set it */ sameSite: z.ZodOptional; /** * External key is used the cookie by default, * but you can use `options.externalKey` to customize your own external key methods. */ externalKey: z.ZodOptional string` */ get: z.ZodFunction, z.ZodString>; /** * set the external key * `(ctx, key) => void` */ set: z.ZodFunction, z.ZodVoid>; }, "strip", z.ZodTypeAny, { set: (args_0: any, args_1: string, ...args: unknown[]) => void; get: (args_0: any, ...args: unknown[]) => string; }, { set: (args_0: any, args_1: string, ...args: unknown[]) => void; get: (args_0: any, ...args: unknown[]) => string; }>>; /** * session storage is dependent on your external store */ store: z.ZodOptional sessionData | Promise` */ get: z.ZodFunction], z.ZodUnknown>, z.ZodPromise>; /** * set session data for key, with a `maxAge` (in ms) * `(key, sess, maxAge, { rolling, changed, ctx }) => void | Promise` */ set: z.ZodFunction], z.ZodUnknown>, z.ZodPromise>; /** * destroy session data for key * `(key, { ctx })=> void | Promise` */ destroy: z.ZodFunction], z.ZodUnknown>, z.ZodPromise>; }, "strip", z.ZodTypeAny, { set: (args_0: string, args_1: any, args_2: number, args_3: { rolling: boolean; changed: boolean; ctx?: any; }, ...args: unknown[]) => Promise; get: (args_0: string, args_1: number, args_2: { rolling: boolean; ctx?: any; }, ...args: unknown[]) => Promise; destroy: (args_0: string, args_1: { ctx?: any; }, ...args: unknown[]) => Promise; }, { set: (args_0: string, args_1: any, args_2: number, args_3: { rolling: boolean; changed: boolean; ctx?: any; }, ...args: unknown[]) => Promise; get: (args_0: string, args_1: number, args_2: { rolling: boolean; ctx?: any; }, ...args: unknown[]) => Promise; destroy: (args_0: string, args_1: { ctx?: any; }, ...args: unknown[]) => Promise; }>>; /** * If your session store requires data or utilities from context, `opts.ContextStore` is also supported. * `ContextStore` must be a class which claims three instance methods demonstrated above. * `new ContextStore(ctx)` will be executed on every request. */ ContextStore: z.ZodOptional; encode: z.ZodDefault, z.ZodString>>>; decode: z.ZodDefault, z.ZodAny>>; /** * If you want to generate a new session id, you can use `genid` option to customize it. * Default is a function that uses `randomUUID()`. * `(ctx) => string` */ genid: z.ZodOptional, z.ZodString>>; /** * If you want to prefix the session id, you can use `prefix` option to customize it. * It will not work if `options.genid(ctx)` present. */ prefix: z.ZodOptional; /** * valid session value before use it * `(ctx, sessionData) => boolean` */ valid: z.ZodOptional, z.ZodAny>>; /** * hook before save session * `(ctx, sessionModel) => void` */ beforeSave: z.ZodOptional, z.ZodVoid>>; }, "strip", z.ZodTypeAny, { key: string; autoCommit: boolean; overwrite: boolean; httpOnly: boolean; signed: boolean; rolling: boolean; renew: boolean; encode: (args_0: any, ...args: unknown[]) => string; decode: (args_0: string, ...args: unknown[]) => any; maxAge?: number | "session" | undefined; externalKey?: { set: (args_0: any, args_1: string, ...args: unknown[]) => void; get: (args_0: any, ...args: unknown[]) => string; } | undefined; valid?: ((args_0: any, args_1: any, ...args: unknown[]) => any) | undefined; secure?: boolean | undefined; sameSite?: string | undefined; store?: { set: (args_0: string, args_1: any, args_2: number, args_3: { rolling: boolean; changed: boolean; ctx?: any; }, ...args: unknown[]) => Promise; get: (args_0: string, args_1: number, args_2: { rolling: boolean; ctx?: any; }, ...args: unknown[]) => Promise; destroy: (args_0: string, args_1: { ctx?: any; }, ...args: unknown[]) => Promise; } | undefined; ContextStore?: any; genid?: ((args_0: any, ...args: unknown[]) => string) | undefined; prefix?: string | undefined; beforeSave?: ((args_0: any, args_1: any, ...args: unknown[]) => void) | undefined; }, { maxAge?: number | "session" | undefined; externalKey?: { set: (args_0: any, args_1: string, ...args: unknown[]) => void; get: (args_0: any, ...args: unknown[]) => string; } | undefined; key?: string | undefined; valid?: ((args_0: any, args_1: any, ...args: unknown[]) => any) | undefined; autoCommit?: boolean | undefined; overwrite?: boolean | undefined; httpOnly?: boolean | undefined; signed?: boolean | undefined; rolling?: boolean | undefined; renew?: boolean | undefined; secure?: boolean | undefined; sameSite?: string | undefined; store?: { set: (args_0: string, args_1: any, args_2: number, args_3: { rolling: boolean; changed: boolean; ctx?: any; }, ...args: unknown[]) => Promise; get: (args_0: string, args_1: number, args_2: { rolling: boolean; ctx?: any; }, ...args: unknown[]) => Promise; destroy: (args_0: string, args_1: { ctx?: any; }, ...args: unknown[]) => Promise; } | undefined; ContextStore?: any; encode?: ((args_0: any, ...args: unknown[]) => string) | undefined; decode?: ((args_0: string, ...args: unknown[]) => any) | undefined; genid?: ((args_0: any, ...args: unknown[]) => string) | undefined; prefix?: string | undefined; beforeSave?: ((args_0: any, args_1: any, ...args: unknown[]) => void) | undefined; }>; export type SessionOptions = z.infer; export type CreateSessionOptions = Partial; type Middleware = (ctx: any, next: any) => Promise; /** * Initialize session middleware with `opts`: * * - `key` session cookie name ["koa.sess"] * - all other options are passed as cookie options * * @param {Object} [opts] session options * @param {Application} app koa application instance * @public */ export declare function createSession(opts: CreateSessionOptions, app: any): Middleware; export declare function createSession(app: any, opts?: CreateSessionOptions): Middleware; export default createSession;