import { Fields } from './fields';
import PersonaInquiryView from './PersonaInquiryView';
import { Versions } from './versions';
import type { CollectedData, ExtraData, OnCanceledCallback, OnCompleteCallback, OnErrorCallback, OnEventCallback } from './callbacks';
import { StepData, Document, UiStepData, SelfieCaptureMethod, SelfieCapture, SelfieStepData, GovernmentIdCaptureFrames, GovernmentIdCaptureSide, GovernmentIdCaptureMethod, GovernmentIdCapture, GovernmentIdStepData, DocumentStepData } from './StepData';
export { Fields };
export { PersonaInquiryView };
export { Versions };
export { CollectedData, ExtraData, OnCanceledCallback, OnCompleteCallback, OnErrorCallback, OnEventCallback, };
export { StepData, Document, UiStepData, SelfieCaptureMethod, SelfieCapture, SelfieStepData, GovernmentIdCaptureFrames, GovernmentIdCaptureSide, GovernmentIdCaptureMethod, GovernmentIdCapture, GovernmentIdStepData, DocumentStepData, };
declare const Unique: unique symbol;
export type Opaque<T, Tag> = T & {
    [Unique]: Tag;
};
type TemplateId = Opaque<string, 'TemplateId'>;
type TemplateVersion = Opaque<string, 'TemplateVersion'>;
type InquiryId = Opaque<string, 'InquiryId'>;
type AccountId = Opaque<string, 'AccountId'>;
export declare class InvalidTemplateId extends Error {
}
export declare class InvalidTemplateVersion extends Error {
}
export declare class InvalidInquiryId extends Error {
}
export declare class InvalidAccountId extends Error {
}
/**
 * String enum for environments. These strings will be parsed
 * on the native side bridge into Kotlin / Swift enums.
 */
export declare enum Environment {
    SANDBOX = "sandbox",
    PRODUCTION = "production"
}
/**
 * An enum value which determines whether this sdk should use the theme values sent from the server.
 */
export declare enum ThemeSource {
    SERVER = "server",
    /**
     * @deprecated Client side theming is deprecated, please configure your theme inside
     * the Persona Dashboard and use SERVER as the theme source.
     */
    CLIENT = "client"
}
/**
 * String enum for style variants.
 */
export declare enum StyleVariant {
    LIGHT = "light",
    DARK = "dark"
}
export interface InquiryOptions {
    templateId?: TemplateId;
    templateVersion?: TemplateVersion;
    inquiryId?: InquiryId;
    referenceId?: string;
    accountId?: AccountId;
    environment?: Environment;
    environmentId?: string;
    themeSetId?: string;
    sessionToken?: string;
    shareToken?: string;
    returnCollectedData?: boolean;
    locale?: String;
    styleVariant?: StyleVariant;
    disablePresentationAnimation?: boolean;
    fields?: Fields;
    onComplete?: OnCompleteCallback;
    onCanceled?: OnCanceledCallback;
    onError?: OnErrorCallback;
    iosThemeObject?: Object | null;
    themeSource?: ThemeSource | null;
}
export declare class Inquiry {
    templateId?: TemplateId;
    templateVersion?: TemplateVersion;
    inquiryId?: InquiryId;
    referenceId?: string;
    accountId?: AccountId;
    environment?: Environment;
    environmentId?: string;
    themeSetId?: string;
    sessionToken?: string;
    shareToken?: string;
    returnCollectedData?: boolean;
    locale?: String;
    styleVariant?: StyleVariant;
    disablePresentationAnimation?: Boolean;
    iosThemeObject?: Object | null;
    themeSource?: ThemeSource | null;
    fields?: Fields | null;
    private readonly onComplete?;
    private readonly onCanceled?;
    private readonly onError?;
    private onCompleteListener?;
    private onCanceledListener?;
    private onErrorListener?;
    constructor(options: InquiryOptions);
    private clearListeners;
    /**
     * Create an Inquiry flow builder based on a template ID.
     *
     * You can find your template ID on the Dashboard under Inquiries > Templates.
     * {@link https://app.withpersona.com/dashboard/inquiry-templates}
     *
     * @param templateId template ID from your Persona Dashboard
     * @return builder for the Inquiry flow
     */
    static fromTemplate(templateId: string): TemplateBuilder;
    /**
     * Create an Inquiry flow builder based on a template ID version.
     *
     * You can find your template ID version on the Dashboard under the
     * settings view of a specific template.
     * {@link https://app.withpersona.com/dashboard/inquiry-templates}
     *
     * @param templateVersion template version from your Persona Dashboard
     * @return builder for the Inquiry flow
     */
    static fromTemplateVersion(templateVersion: string): TemplateBuilder;
    /**
     * Create an Inquiry flow builder based on an inquiry ID.
     *
     * You will need to generate the inquiry ID on the server. To try it out, you can create an
     * inquiry from the Persona Dashboard under "Inquiries". Click on the "Create Inquiry" button
     * and copy the inquiry ID from the URL.
     * {@link https://app.withpersona.com/dashboard/inquiries}
     *
     * @param inquiryId inquiry ID from your server
     * @return builder for the Inquiry flow
     */
    static fromInquiry(inquiryId: string): InquiryBuilder;
    static onEvent(callback: OnEventCallback): void;
    toOptionsJson(): {
        templateId: TemplateId | undefined;
        templateVersion: TemplateVersion | undefined;
        inquiryId: InquiryId | undefined;
        referenceId: string | undefined;
        accountId: AccountId | undefined;
        environment: Environment | undefined;
        environmentId: string | undefined;
        themeSetId: string | undefined;
        sessionToken: string | undefined;
        shareToken: string | undefined;
        fields: Fields | null | undefined;
        returnCollectedData: boolean | undefined;
        themeSource: ThemeSource | null | undefined;
        iosTheme: {
            [key: string]: string;
        };
        locale: String | undefined;
        styleVariant: StyleVariant | undefined;
        disablePresentationAnimation: Boolean | undefined;
    };
    /**
     * Launch the Persona Inquiry.
     */
    start(): void;
}
declare class InquiryBuilder {
    private _inquiryId;
    private _sessionToken?;
    private _shareToken?;
    private _onComplete?;
    private _onCanceled?;
    private _onError?;
    private _iosThemeObject?;
    private _themeSource;
    private _fields?;
    private _locale?;
    private _styleVariant?;
    private _disablePresentationAnimation?;
    constructor(inquiryId: InquiryId);
    sessionToken(sessionToken: string): InquiryBuilder;
    /**
     * Sets a share token (`cnst_*`) used to enable cross-organization data
     * sharing consent in the Persona inquiry flow. When provided, the SDK
     * forwards the token on every transition request so that the backend can
     * stage a consent step during the inquiry.
     *
     * The token is treated as an opaque string and is optional. Existing flows
     * without a share token are unaffected.
     *
     * @param shareToken share token from your server
     */
    shareToken(shareToken: string): InquiryBuilder;
    onComplete(callback: OnCompleteCallback): InquiryBuilder;
    onCanceled(callback: OnCanceledCallback): InquiryBuilder;
    onError(callback: OnErrorCallback): InquiryBuilder;
    /**
     * @deprecated Use iosThemeToUse
     */
    iosTheme(themeObject: Object): InquiryBuilder;
    iosThemeToUse(themeObject: Object, themeSource: ThemeSource): InquiryBuilder;
    locale(locale: string): InquiryBuilder;
    styleVariant(styleVariant: StyleVariant): InquiryBuilder;
    disablePresentationAnimation(disablePresentationAnimation: boolean): InquiryBuilder;
    build(): Inquiry;
}
declare class TemplateBuilder {
    private readonly _templateId?;
    private readonly _templateVersion?;
    private _accountId?;
    private _referenceId?;
    private _environment?;
    private _environmentId?;
    private _themeSetId?;
    private _fields?;
    private _sessionToken?;
    private _shareToken?;
    private _returnCollectedData?;
    private _locale?;
    private _styleVariant?;
    private _disablePresentationAnimation?;
    private _onComplete?;
    private _onCanceled?;
    private _onError?;
    private _iosThemeObject?;
    private _themeSource;
    constructor(templateId?: TemplateId | null, templateVersion?: TemplateVersion | null);
    returnCollectedData(returnCollectedData: boolean): this;
    referenceId(referenceId: string): TemplateBuilder;
    accountId(accountId: string): TemplateBuilder;
    environment(environment: Environment): TemplateBuilder;
    environmentId(environmentId: string): TemplateBuilder;
    themeSetId(themeSetId: string): TemplateBuilder;
    sessionToken(sessionToken: string): TemplateBuilder;
    /**
     * Sets a share token (`cnst_*`) used to enable cross-organization data
     * sharing consent in the Persona inquiry flow. When provided, the SDK
     * forwards the token on every transition request so that the backend can
     * stage a consent step during the inquiry.
     *
     * The token is treated as an opaque string and is optional. Existing flows
     * without a share token are unaffected.
     *
     * @param shareToken share token from your server
     */
    shareToken(shareToken: string): TemplateBuilder;
    fields(fields: Fields): TemplateBuilder;
    locale(locale: string): TemplateBuilder;
    styleVariant(styleVariant: StyleVariant): TemplateBuilder;
    onComplete(callback: OnCompleteCallback): TemplateBuilder;
    onCanceled(callback: OnCanceledCallback): TemplateBuilder;
    onError(callback: OnErrorCallback): TemplateBuilder;
    /**
     * @deprecated Use iosThemeToUse
     */
    iosTheme(themeObject: Object): TemplateBuilder;
    iosThemeToUse(themeObject: Object, themeSource: ThemeSource): TemplateBuilder;
    disablePresentationAnimation(disablePresentationAnimation: boolean): TemplateBuilder;
    build(): Inquiry;
}
/**
 * @deprecated Use the `Inquiry` static methods instead
 */
declare namespace InquiryBuilders {
    /**
     * @deprecated Use {@link Inquiry#fromInquiry} instead
     */
    function fromInquiry(inquiryId: string): InquiryBuilder;
    /**
     * @deprecated Use {@link Inquiry#fromTemplate} instead
     */
    function fromTemplate(templateId: string): TemplateBuilder;
    /**
     * @deprecated Use {@link Inquiry#fromTemplateVersion} instead
     */
    function fromTemplateVersion(templateVersion: string): TemplateBuilder;
}
export default InquiryBuilders;
