import type { ResourceIdentifier } from '../../../../http/representation/ResourceIdentifier';
import type { IdentifierGenerator } from '../../../../pods/generate/IdentifierGenerator';
import type { PodSettings } from '../../../../pods/settings/PodSettings';
import type { WebIdStore } from '../../webid/util/WebIdStore';
import { PodCreator } from './PodCreator';
import type { PodCreatorInput, PodCreatorOutput } from './PodCreator';
import type { PodStore } from './PodStore';
export interface BasePodCreatorArgs {
    /**
     * Base URL of the server.
     * Used to potentially set the `solid:oidcIssuer` triple
     * and/or the pod URL if it is a root pod.
     */
    baseUrl: string;
    /**
     * Generates the base URL of the pod based on the input `name`.
     */
    identifierGenerator: IdentifierGenerator;
    /**
     * The path of where the WebID will be generated by the template, relative to the pod URL.
     */
    relativeWebIdPath: string;
    /**
     * WebID data store.
     */
    webIdStore: WebIdStore;
    /**
     * Pod data store.
     */
    podStore: PodStore;
}
/**
 * Handles the creation of pods.
 * Will call the stored {@link PodStore} with the provided settings.
 */
export declare class BasePodCreator extends PodCreator {
    protected readonly logger: import("global-logger-factory").Logger<unknown>;
    protected readonly baseUrl: string;
    protected readonly identifierGenerator: IdentifierGenerator;
    protected readonly relativeWebIdPath: string;
    protected readonly webIdStore: WebIdStore;
    protected readonly podStore: PodStore;
    constructor(args: BasePodCreatorArgs);
    handle(input: PodCreatorInput): Promise<PodCreatorOutput>;
    protected generateBaseIdentifier(name?: string): ResourceIdentifier;
    /**
     * Links the WebID to the account if `linkWebId` is true.
     * Also updates the `oidcIssuer` value in the settings object in that case.
     */
    protected handleWebId(linkWebId: boolean, webId: string, accountId: string, settings: PodSettings): Promise<string | undefined>;
    /**
     * Creates a pod with the given settings.
     * In case pod creation fails, the given WebID link will be removed, if there is one, before throwing an error.
     */
    protected createPod(accountId: string, settings: PodSettings, overwrite: boolean, webIdLink?: string): Promise<string>;
}
