import { BaseLogger } 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 Onboarding from './screens/Onboarding';
import { GenericFn } from './types/fn';
import { AuthenticateStackParams, ScreenOptionsType } from './types/navigators';
export type FN_ONBOARDING_DONE = (dispatch: React.Dispatch<ReducerAction<unknown>>, navigation: StackNavigationProp<AuthenticateStackParams>) => GenericFn;
type LoadStateFn = (dispatch: React.Dispatch<ReducerAction<unknown>>) => Promise<void>;
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_TERMS: "screen.terms";
    readonly SCREEN_ONBOARDING: "screen.onboarding";
    readonly SCREEN_DEVELOPER: "screen.developer";
    readonly SCREEN_ONBOARDING_ITEM: "screen.onboarding.item";
};
export declare const STACK_TOKENS: {
    readonly STACK_ONBOARDING: "stack.onboarding";
};
export declare const FN_TOKENS: {
    readonly FN_ONBOARDING_DONE: "fn.onboardingDone";
};
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_ONBOARDING_CONFIG: "object.onboarding-config";
};
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";
};
export declare const 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 OBJECT_ONBOARDING_CONFIG: "object.onboarding-config";
    readonly LOAD_STATE: "state.load";
    readonly COMP_BUTTON: "comp.button";
    readonly FN_ONBOARDING_DONE: "fn.onboardingDone";
    readonly STACK_ONBOARDING: "stack.onboarding";
    readonly SERVICE_TERMS: "screen.terms";
    readonly SCREEN_PREFACE: "screen.preface";
    readonly SCREEN_TERMS: "screen.terms";
    readonly SCREEN_ONBOARDING: "screen.onboarding";
    readonly SCREEN_DEVELOPER: "screen.developer";
    readonly SCREEN_ONBOARDING_ITEM: "screen.onboarding.item";
    readonly GROUP_BY_REFERENT: "proof.groupByReferant";
    readonly CRED_HELP_ACTION_OVERRIDES: "proof.credHelpActionOverride";
};
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.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]: LoadStateFn;
    [TOKENS.COMP_BUTTON]: Button;
    [TOKENS.OBJECT_ONBOARDING_CONFIG]: ScreenOptionsType;
    [TOKENS.UTIL_LOGGER]: BaseLogger;
    [TOKENS.UTIL_OCA_RESOLVER]: OCABundleResolverType;
    [TOKENS.UTIL_LEDGERS]: IndyVdrPoolConfig[];
    [TOKENS.UTIL_PROOF_TEMPLATE]: ProofRequestTemplateFn | undefined;
};
export interface Container {
    init(): Container;
    resolve<K extends keyof TokenMapping>(token: K): TokenMapping[K];
    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 {};
//# sourceMappingURL=container-api.d.ts.map