import { type OberonPlugin, type OberonPluginAdapter, type PluginVersion, type OberonHandler, type OberonAdapter } from "../lib/dtd";
type InititalisedPlugins = {
    adapter: OberonPluginAdapter;
    handlers: Record<string, (adapter: OberonAdapter) => OberonHandler>;
    versions: PluginVersion[];
};
export declare const baseAccumulator: InititalisedPlugins;
export declare function initPlugins(plugins?: OberonPlugin[]): {
    adapter: {
        prebuild: () => Promise<void>;
        addPage: (page: import("..").OberonPage) => Promise<void>;
        addImage: (data: import("zod").TypeOf<typeof import("..").ImageSchema>) => Promise<void>;
        addUser: (data: import("zod").TypeOf<typeof import("..").AddUserSchema>) => Promise<import("..").OberonUser>;
        deletePage: (key: import("..").OberonPageMeta["key"]) => Promise<void>;
        deleteImage: (key: import("..").OberonImage["key"]) => Promise<void>;
        deleteUser: ((id: import("..").OberonUser["id"]) => Promise<void>) & ((userId: string) => Promise<void> | import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterUser | null | undefined>) & ((id: import("..").OberonUser["id"]) => Promise<void>);
        changeRole: (data: import("zod").TypeOf<typeof import("..").ChangeRoleSchema>) => Promise<void>;
        getAllImages: () => Promise<import("..").OberonImage[]>;
        getAllPages: () => Promise<import("..").OberonPageMeta[]>;
        getAllUsers: () => Promise<import("..").OberonUser[]>;
        getPageData: (key: import("..").OberonPageMeta["key"]) => Promise<import("@measured/puck").Data | null>;
        getSite: () => Promise<import("..").OberonSite | undefined>;
        updatePageData: (data: import("..").OberonPage) => Promise<void>;
        updateSite: (data: import("zod").TypeOf<typeof import("..").SiteSchema>) => Promise<void>;
        createSession: (session: {
            sessionToken: string;
            userId: string;
            expires: Date;
        }) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterSession>;
        createUser: ((user: import("@auth/core/adapters").AdapterUser) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterUser>) & ((user: Omit<import("@auth/core/adapters").AdapterUser & {
            role: import("..").OberonRole;
        }, "id">) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterUser & {
            role: import("..").OberonRole;
        }>);
        createVerificationToken: (verificationToken: import("@auth/core/adapters").VerificationToken) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").VerificationToken | null | undefined>;
        deleteSession: (sessionToken: string) => Promise<void> | import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterSession | null | undefined>;
        getSessionAndUser: (sessionToken: string) => import("@auth/core/types").Awaitable<{
            session: import("@auth/core/adapters").AdapterSession;
            user: import("@auth/core/adapters").AdapterUser;
        } | null>;
        getUser: (id: string) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterUser | null>;
        getUserByAccount: (providerAccountId: Pick<import("@auth/core/adapters").AdapterAccount, "provider" | "providerAccountId">) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterUser | null>;
        getUserByEmail: (email: string) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterUser | null>;
        linkAccount: (account: import("@auth/core/adapters").AdapterAccount) => Promise<void> | import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterAccount | null | undefined>;
        unlinkAccount: (providerAccountId: Pick<import("@auth/core/adapters").AdapterAccount, "provider" | "providerAccountId">) => Promise<void> | import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterAccount | undefined>;
        updateSession: (session: Partial<import("@auth/core/adapters").AdapterSession> & Pick<import("@auth/core/adapters").AdapterSession, "sessionToken">) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterSession | null | undefined>;
        updateUser: (user: Partial<import("@auth/core/adapters").AdapterUser> & Pick<import("@auth/core/adapters").AdapterUser, "id">) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").AdapterUser>;
        useVerificationToken: (params: {
            identifier: string;
            token: string;
        }) => import("@auth/core/types").Awaitable<import("@auth/core/adapters").VerificationToken | null>;
        getCurrentUser: () => Promise<import("..").OberonUser | null>;
        hasPermission: (props: {
            user?: import("..").OberonUser | null;
            action: import("..").AdapterActionGroup;
            permission: import("..").AdapterPermission;
        }) => boolean;
        signIn: (data: {
            email: string;
        }) => Promise<void>;
        signOut: () => Promise<void>;
        sendVerificationRequest: (props: {
            email: string;
            token: string;
            url: string;
        }) => Promise<void>;
    };
    handlers: Record<string, (adapter: OberonAdapter) => OberonHandler>;
    versions: PluginVersion[];
};
export {};
//# sourceMappingURL=init-plugins.d.ts.map