import { GetSession, GetAccessToken } from './session';
import { WithApiAuthOptional, WithApiAuthRequired, WithPageAuthRequired } from './helpers';
import { HandleAuth, HandleCallback, HandleLogin, HandleLogout, HandleProfile } from './handlers';
import { ConfigParameters } from './zsession';
/**
 * The SDK server instance.
 *
 * This is created for you when you use the named exports, or you can create your own using {@link InitZeusIdentity}
 *
 * See {@link Config} fro more info.
 *
 * @category Server
 */
export interface SignInWithZeusAuth {
    /**
     * Session getter
     */
    getSession: GetSession;
    /**
     * Access Token getter
     */
    getAccessToken: GetAccessToken;
    /**
     * Login handler which will redirect the user to ZeusAuth.
     */
    handleLogin: HandleLogin;
    /**
     * Callback handler which will complete the transaction and create a local session.
     */
    handleCallback: HandleCallback;
    /**
     * Logout handler which will clear the local session and the ZeusAuth session.
     */
    handleLogout: HandleLogout;
    /**
     * Profile handler which return profile information about the user.
     */
    handleProfile: HandleProfile;
    /**
     * Helper that adds auth to an API Route
     */
    withApiAuthRequired: WithApiAuthRequired;
    /**
     * Helper that adds auth to an API Route
     */
    withApiAuthOptional: WithApiAuthOptional;
    /**
     * Helper that adds auth to a Page Route
     */
    withPageAuthRequired: WithPageAuthRequired;
    /**
     * Create the main handlers for your api routes
     */
    handleAuth: HandleAuth;
}
/**
 * Initialise your own instance of the SDK.
 *
 * See {@link Config}
 *
 * @category Server
 */
export declare type InitZeusIdentity = (params?: ConfigParameters) => SignInWithZeusAuth;
//# sourceMappingURL=instance.d.ts.map