import { BaseLogger } from '@credo-ts/core';
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 Onboarding from './screens/Onboarding';
import { GenericFn } from './types/fn';
import { AuthenticateStackParams, ScreenOptionsType } from './types/navigators';
export declare enum PROOF_TOKENS {
    GROUP_BY_REFERENT = "proof.groupByReferant"
}
export declare enum SCREEN_TOKENS {
    SCREEN_PREFACE = "screen.preface",
    SCREEN_TERMS = "screen.terms",
    SCREEN_ONBOARDING = "screen.onboarding",
    SCREEN_DEVELOPER = "screen.developer",
    SCREEN_ONBOARDING_ITEM = "screen.onboarding.item"
}
export declare enum STACK_TOKENS {
    STACK_ONBOARDING = "stack.onboarding"
}
export declare enum FN_TOKENS {
    FN_ONBOARDING_DONE = "fn.onboardingDone"
}
export declare enum COMP_TOKENS {
    COMP_BUTTON = "comp.button"
}
export declare enum SERVICE_TOKENS {
    SERVICE_TERMS = "screen.terms"
}
export declare enum LOAD_STATE_TOKENS {
    LOAD_STATE = "state.load"
}
export declare enum OBJECT_TOKENS {
    OBJECT_ONBOARDINGCONFIG = "object.onboarding-config"
}
export declare enum UTILITY_TOKENS {
    UTIL_LOGGER = "utility.logger",
    UTIL_OCA_RESOLVER = "utility.oca-resolver"
}
export declare const TOKENS: {
    UTIL_LOGGER: UTILITY_TOKENS.UTIL_LOGGER;
    UTIL_OCA_RESOLVER: UTILITY_TOKENS.UTIL_OCA_RESOLVER;
    OBJECT_ONBOARDINGCONFIG: OBJECT_TOKENS.OBJECT_ONBOARDINGCONFIG;
    LOAD_STATE: LOAD_STATE_TOKENS.LOAD_STATE;
    COMP_BUTTON: COMP_TOKENS.COMP_BUTTON;
    FN_ONBOARDING_DONE: FN_TOKENS.FN_ONBOARDING_DONE;
    STACK_ONBOARDING: STACK_TOKENS.STACK_ONBOARDING;
    SERVICE_TERMS: SERVICE_TOKENS.SERVICE_TERMS;
    SCREEN_PREFACE: SCREEN_TOKENS.SCREEN_PREFACE;
    SCREEN_TERMS: SCREEN_TOKENS.SCREEN_TERMS;
    SCREEN_ONBOARDING: SCREEN_TOKENS.SCREEN_ONBOARDING;
    SCREEN_DEVELOPER: SCREEN_TOKENS.SCREEN_DEVELOPER;
    SCREEN_ONBOARDING_ITEM: SCREEN_TOKENS.SCREEN_ONBOARDING_ITEM;
    GROUP_BY_REFERENT: PROOF_TOKENS.GROUP_BY_REFERENT;
};
export type FN_ONBOARDING_DONE = (dispatch: React.Dispatch<ReducerAction<unknown>>, navigation: StackNavigationProp<AuthenticateStackParams>) => GenericFn;
type FN_LOADSTATE = (dispatch: React.Dispatch<ReducerAction<unknown>>) => Promise<void>;
export interface TokenMapping {
    [TOKENS.GROUP_BY_REFERENT]: boolean;
    [TOKENS.SCREEN_PREFACE]: React.FC;
    [TOKENS.STACK_ONBOARDING]: React.FC;
    [TOKENS.SCREEN_TERMS]: {
        screen: React.FC;
        version: boolean | string;
    };
    [TOKENS.SCREEN_DEVELOPER]: React.FC;
    [TOKENS.SCREEN_ONBOARDING]: typeof Onboarding;
    [TOKENS.FN_ONBOARDING_DONE]: FN_ONBOARDING_DONE;
    [TOKENS.LOAD_STATE]: FN_LOADSTATE;
    [TOKENS.COMP_BUTTON]: Button;
    [TOKENS.OBJECT_ONBOARDINGCONFIG]: ScreenOptionsType;
    [TOKENS.UTIL_LOGGER]: BaseLogger;
    [TOKENS.UTIL_OCA_RESOLVER]: OCABundleResolverType;
}
export interface Container {
    init(): Container;
    resolve<K extends keyof TokenMapping>(token: K): TokenMapping[K];
    getContainer(): DependencyContainer;
}
export declare const ContainerContext: React.Context<Container | undefined>;
export declare const ContainerProvider: React.Provider<Container | undefined>;
export declare const useContainer: () => Container;
export {};
//# sourceMappingURL=container-api.d.ts.map