import { Agent } from '@credo-ts/core';
import { IndyVdrPoolConfig } from '@credo-ts/indy-vdr';
import { ProofRequestTemplate } from '@hyperledger/aries-bifold-verifier';
import { OCABundleResolverType } from '@hyperledger/aries-oca/build/legacy';
import { StackNavigationProp } from '@react-navigation/stack';
import React from 'react';
import { DependencyContainer } from 'tsyringe';
import { Button } from './components/buttons/Button-api';
import { ReducerAction } from './contexts/reducers/store';
import { IHistoryManager } from './modules/history';
import Onboarding from './screens/Onboarding';
import UpdateAvailable from './screens/UpdateAvailable';
import { AttestationMonitor } from './types/attestation';
import { IVersionCheckService } from './types/version-check';
import { GenericFn } from './types/fn';
import { AuthenticateStackParams, ScreenLayoutConfig, ScreenOptionsType, OnboardingTask } from './types/navigators';
import { CustomNotification } from './types/notification';
import { Config, HistoryEventsLoggerConfig } from './types/config';
import { State } from './types/state';
import { NotificationReturnType, NotificationsInputProps } from './hooks/notifications';
import { NotificationListItemProps } from './components/listItems/NotificationListItem';
import { PINCreateHeaderProps } from './components/misc/PINCreateHeader';
import { PINExplainerProps } from './screens/PINExplainer';
import { CredentialListFooterProps } from './types/credential-list-footer';
import { ContactListItemProps } from './components/listItems/ContactListItem';
import { ContactCredentialListItemProps } from './components/listItems/ContactCredentialListItem';
import { InlineErrorConfig } from './types/error';
import { BifoldLogger } from './services/logger';
export type FN_ONBOARDING_DONE = (dispatch: React.Dispatch<ReducerAction<unknown>>, navigation: StackNavigationProp<AuthenticateStackParams>) => GenericFn;
type LoadStateFn = (dispatch: React.Dispatch<ReducerAction<unknown>>) => Promise<void>;
type GenerateOnboardingWorkflowStepsFn = (state: State, config: Config, termsVersion: number) => Array<OnboardingTask>;
type ProofRequestTemplateFn = (useDevTemplates: boolean) => Array<ProofRequestTemplate>;
export declare const PROOF_TOKENS: {
    readonly GROUP_BY_REFERENT: "proof.groupByReferant";
    readonly CRED_HELP_ACTION_OVERRIDES: "proof.credHelpActionOverride";
};
export declare const SCREEN_TOKENS: {
    readonly SCREEN_PREFACE: "screen.preface";
    readonly SCREEN_UPDATE_AVAILABLE: "screen.update-available";
    readonly SCREEN_TERMS: "screen.terms";
    readonly SCREEN_ONBOARDING: "screen.onboarding";
    readonly SCREEN_DEVELOPER: "screen.developer";
    readonly SCREEN_ONBOARDING_ITEM: "screen.onboarding.item";
    readonly SCREEN_ONBOARDING_PAGES: "screen.onboarding.pages";
    readonly SCREEN_SPLASH: "screen.splash";
    readonly SCREEN_SCAN: "screen.scan";
    readonly SCREEN_USE_BIOMETRY: "screen.use-biometry";
    readonly SCREEN_PIN_EXPLAINER: "screen.pin-explainer";
};
export declare const NAV_TOKENS: {
    readonly CUSTOM_NAV_STACK_1: "nav.slot1";
};
export declare const COMPONENT_TOKENS: {
    readonly COMPONENT_HOME_HEADER: "component.home.header";
    readonly COMPONENT_HOME_NOTIFICATIONS_EMPTY_LIST: "component.home.notifications-empty-list";
    readonly COMPONENT_HOME_FOOTER: "component.home.footer";
    readonly COMPONENT_CRED_EMPTY_LIST: "component.cred.empty-list";
    readonly COMPONENT_RECORD: "component.record";
    readonly COMPONENT_PIN_CREATE_HEADER: "component.pin-create-header";
    readonly COMPONENT_CONTACT_LIST_ITEM: "component.contact-list-item";
    readonly COMPONENT_CONTACT_DETAILS_CRED_LIST_ITEM: "component.contact-details-cred-list-item";
    readonly COMPONENT_CONNECTION_ALERT: "component.connection-alert";
};
export declare const NOTIFICATION_TOKENS: {
    readonly NOTIFICATIONS: "notification.list";
    readonly NOTIFICATIONS_LIST_ITEM: "notification.list-item";
};
export declare const STACK_TOKENS: {
    readonly STACK_ONBOARDING: "stack.onboarding";
};
export declare const FN_TOKENS: {
    readonly FN_ONBOARDING_DONE: "fn.onboardingDone";
    readonly COMPONENT_CRED_LIST_HEADER_RIGHT: "fn.credListHeaderRight";
    readonly COMPONENT_CRED_LIST_OPTIONS: "fn.credListOptions";
    readonly COMPONENT_CRED_LIST_FOOTER: "fn.credListFooter";
};
export declare const HISTORY_TOKENS: {
    readonly FN_LOAD_HISTORY: "fn.loadHistory";
    readonly HISTORY_ENABLED: "history.enabled";
    readonly HISTORY_EVENTS_LOGGER: "history.eventsLogger";
};
export declare const COMP_TOKENS: {
    readonly COMP_BUTTON: "comp.button";
};
export declare const SERVICE_TOKENS: {
    readonly SERVICE_TERMS: "screen.terms";
};
export declare const LOAD_STATE_TOKENS: {
    readonly LOAD_STATE: "state.load";
};
export declare const OBJECT_TOKENS: {
    readonly OBJECT_SCREEN_CONFIG: "object.screen-config";
    readonly OBJECT_LAYOUT_CONFIG: "object.screenlayout-config";
};
export declare const CACHE_TOKENS: {
    readonly CACHE_CRED_DEFS: "cache.cred-defs";
    readonly CACHE_SCHEMAS: "cache.schemas";
};
export declare const UTILITY_TOKENS: {
    readonly UTIL_LOGGER: "utility.logger";
    readonly UTIL_OCA_RESOLVER: "utility.oca-resolver";
    readonly UTIL_LEDGERS: "utility.ledgers";
    readonly UTIL_PROOF_TEMPLATE: "utility.proof-template";
    readonly UTIL_ATTESTATION_MONITOR: "utility.attestation-monitor";
    readonly UTIL_APP_VERSION_MONITOR: "utility.app-version-monitor";
};
export declare const CONFIG_TOKENS: {
    readonly CONFIG: "config";
    readonly INLINE_ERRORS: "errors.inline";
    readonly ONBOARDING: "utility.onboarding";
};
export declare const TOKENS: {
    readonly FN_LOAD_HISTORY: "fn.loadHistory";
    readonly HISTORY_ENABLED: "history.enabled";
    readonly HISTORY_EVENTS_LOGGER: "history.eventsLogger";
    readonly CONFIG: "config";
    readonly INLINE_ERRORS: "errors.inline";
    readonly ONBOARDING: "utility.onboarding";
    readonly UTIL_LOGGER: "utility.logger";
    readonly UTIL_OCA_RESOLVER: "utility.oca-resolver";
    readonly UTIL_LEDGERS: "utility.ledgers";
    readonly UTIL_PROOF_TEMPLATE: "utility.proof-template";
    readonly UTIL_ATTESTATION_MONITOR: "utility.attestation-monitor";
    readonly UTIL_APP_VERSION_MONITOR: "utility.app-version-monitor";
    readonly CACHE_CRED_DEFS: "cache.cred-defs";
    readonly CACHE_SCHEMAS: "cache.schemas";
    readonly OBJECT_SCREEN_CONFIG: "object.screen-config";
    readonly OBJECT_LAYOUT_CONFIG: "object.screenlayout-config";
    readonly LOAD_STATE: "state.load";
    readonly COMP_BUTTON: "comp.button";
    readonly FN_ONBOARDING_DONE: "fn.onboardingDone";
    readonly COMPONENT_CRED_LIST_HEADER_RIGHT: "fn.credListHeaderRight";
    readonly COMPONENT_CRED_LIST_OPTIONS: "fn.credListOptions";
    readonly COMPONENT_CRED_LIST_FOOTER: "fn.credListFooter";
    readonly NOTIFICATIONS: "notification.list";
    readonly NOTIFICATIONS_LIST_ITEM: "notification.list-item";
    readonly STACK_ONBOARDING: "stack.onboarding";
    readonly SERVICE_TERMS: "screen.terms";
    readonly CUSTOM_NAV_STACK_1: "nav.slot1";
    readonly SCREEN_PREFACE: "screen.preface";
    readonly SCREEN_UPDATE_AVAILABLE: "screen.update-available";
    readonly SCREEN_TERMS: "screen.terms";
    readonly SCREEN_ONBOARDING: "screen.onboarding";
    readonly SCREEN_DEVELOPER: "screen.developer";
    readonly SCREEN_ONBOARDING_ITEM: "screen.onboarding.item";
    readonly SCREEN_ONBOARDING_PAGES: "screen.onboarding.pages";
    readonly SCREEN_SPLASH: "screen.splash";
    readonly SCREEN_SCAN: "screen.scan";
    readonly SCREEN_USE_BIOMETRY: "screen.use-biometry";
    readonly SCREEN_PIN_EXPLAINER: "screen.pin-explainer";
    readonly COMPONENT_HOME_HEADER: "component.home.header";
    readonly COMPONENT_HOME_NOTIFICATIONS_EMPTY_LIST: "component.home.notifications-empty-list";
    readonly COMPONENT_HOME_FOOTER: "component.home.footer";
    readonly COMPONENT_CRED_EMPTY_LIST: "component.cred.empty-list";
    readonly COMPONENT_RECORD: "component.record";
    readonly COMPONENT_PIN_CREATE_HEADER: "component.pin-create-header";
    readonly COMPONENT_CONTACT_LIST_ITEM: "component.contact-list-item";
    readonly COMPONENT_CONTACT_DETAILS_CRED_LIST_ITEM: "component.contact-details-cred-list-item";
    readonly COMPONENT_CONNECTION_ALERT: "component.connection-alert";
    readonly GROUP_BY_REFERENT: "proof.groupByReferant";
    readonly CRED_HELP_ACTION_OVERRIDES: "proof.credHelpActionOverride";
};
export type FN_HISTORY_MANAGER = (agent: Agent<any>) => IHistoryManager;
export type TokenMapping = {
    [TOKENS.CRED_HELP_ACTION_OVERRIDES]: {
        credDefIds: string[];
        schemaIds: string[];
        action: (navigation: any) => void;
    }[];
    [TOKENS.GROUP_BY_REFERENT]: boolean;
    [TOKENS.SCREEN_PREFACE]: React.FC;
    [TOKENS.SCREEN_UPDATE_AVAILABLE]: typeof UpdateAvailable;
    [TOKENS.STACK_ONBOARDING]: React.FC;
    [TOKENS.SCREEN_TERMS]: {
        screen: React.FC;
        version: boolean | string;
    };
    [TOKENS.SCREEN_DEVELOPER]: React.FC;
    [TOKENS.SCREEN_ONBOARDING_PAGES]: (onTutorialCompleted: GenericFn, OnboardingTheme: any) => Array<Element>;
    [TOKENS.SCREEN_SPLASH]: React.FC;
    [TOKENS.SCREEN_SCAN]: React.FC;
    [TOKENS.SCREEN_USE_BIOMETRY]: React.FC;
    [TOKENS.SCREEN_ONBOARDING]: typeof Onboarding;
    [TOKENS.SCREEN_PIN_EXPLAINER]: React.FC<PINExplainerProps>;
    [TOKENS.FN_ONBOARDING_DONE]: FN_ONBOARDING_DONE;
    [TOKENS.LOAD_STATE]: LoadStateFn;
    [TOKENS.COMP_BUTTON]: Button;
    [TOKENS.NOTIFICATIONS]: {
        useNotifications: ({ openIDUri }: NotificationsInputProps) => NotificationReturnType;
        customNotificationConfig?: CustomNotification;
    };
    [TOKENS.NOTIFICATIONS_LIST_ITEM]: React.FC<NotificationListItemProps>;
    [TOKENS.OBJECT_SCREEN_CONFIG]: ScreenOptionsType;
    [TOKENS.OBJECT_LAYOUT_CONFIG]: ScreenLayoutConfig;
    [TOKENS.COMPONENT_PIN_CREATE_HEADER]: React.FC<PINCreateHeaderProps>;
    [TOKENS.CACHE_CRED_DEFS]: {
        did: string;
        id: string;
    }[];
    [TOKENS.CACHE_SCHEMAS]: {
        did: string;
        id: string;
    }[];
    [TOKENS.UTIL_LOGGER]: BifoldLogger;
    [TOKENS.UTIL_OCA_RESOLVER]: OCABundleResolverType;
    [TOKENS.UTIL_LEDGERS]: IndyVdrPoolConfig[];
    [TOKENS.UTIL_PROOF_TEMPLATE]: ProofRequestTemplateFn | undefined;
    [TOKENS.UTIL_ATTESTATION_MONITOR]: AttestationMonitor;
    [TOKENS.UTIL_APP_VERSION_MONITOR]: IVersionCheckService;
    [TOKENS.FN_LOAD_HISTORY]: FN_HISTORY_MANAGER;
    [TOKENS.HISTORY_ENABLED]: boolean;
    [TOKENS.HISTORY_EVENTS_LOGGER]: HistoryEventsLoggerConfig;
    [TOKENS.CONFIG]: Config;
    [TOKENS.ONBOARDING]: GenerateOnboardingWorkflowStepsFn;
    [TOKENS.COMPONENT_CRED_LIST_HEADER_RIGHT]: React.FC;
    [TOKENS.COMPONENT_CRED_LIST_OPTIONS]: React.FC;
    [TOKENS.COMPONENT_CRED_LIST_FOOTER]: React.FC<CredentialListFooterProps>;
    [TOKENS.COMPONENT_HOME_HEADER]: React.FC;
    [TOKENS.COMPONENT_HOME_NOTIFICATIONS_EMPTY_LIST]: React.FC;
    [TOKENS.COMPONENT_HOME_FOOTER]: React.FC;
    [TOKENS.COMPONENT_CRED_EMPTY_LIST]: React.FC;
    [TOKENS.COMPONENT_RECORD]: React.FC;
    [TOKENS.COMPONENT_CONTACT_LIST_ITEM]: React.FC<ContactListItemProps>;
    [TOKENS.COMPONENT_CONTACT_DETAILS_CRED_LIST_ITEM]: React.FC<ContactCredentialListItemProps>;
    [TOKENS.INLINE_ERRORS]: InlineErrorConfig;
    [TOKENS.CUSTOM_NAV_STACK_1]: React.FC;
    [TOKENS.COMPONENT_CONNECTION_ALERT]: React.FC<{
        connectionID?: string;
    }>;
};
export interface Container {
    init(): Container;
    resolve<K extends keyof TokenMapping>(token: K): TokenMapping[K];
    resolveAll<K extends keyof TokenMapping, T extends K[]>(tokens: [...T]): {
        [I in keyof T]: TokenMapping[T[I]];
    };
    get container(): DependencyContainer;
}
export declare const ContainerContext: React.Context<Container | undefined>;
export declare const ContainerProvider: React.Provider<Container | undefined>;
export declare const useContainer: () => Container;
export declare const useServices: <K extends keyof TokenMapping, T extends K[]>(tokens: [...T]) => { [I in keyof T]: TokenMapping[T[I]]; };
export {};
//# sourceMappingURL=container-api.d.ts.map