import { NotifiFrontendClient, WalletWithSignParams } from '@notifi-network/notifi-frontend-client';
import React, { FC, PropsWithChildren } from 'react';
import { NotifiContextProviderProps } from '@notifi-network/notifi-react';

type Maybe<T> = T | undefined;
/** All built-in and custom scalars, mapped to their actual values */
type Scalars = {
    ID: {
        input: string;
        output: string;
    };
    String: {
        input: string;
        output: string;
    };
    Boolean: {
        input: boolean;
        output: boolean;
    };
    Int: {
        input: number;
        output: number;
    };
    Float: {
        input: number;
        output: number;
    };
    /** The `DateTime` scalar represents an ISO-8601 compliant date time type. */
    DateTime: {
        input: string;
        output: string;
    };
    /** The `Decimal` scalar type represents a decimal floating-point number. */
    Decimal: {
        input: number;
        output: number;
    };
    JSON: {
        input: any;
        output: any;
    };
    /** The `Long` scalar type represents non-fractional signed whole 64-bit numeric values. Long can represent values between -(2^63) and 2^63 - 1. */
    Long: {
        input: any;
        output: any;
    };
};
type WalletBlockchain = 'ABSTRACT' | 'ACALA' | 'AGORIC' | 'APTOS' | 'ARBITRUM' | 'ARCH' | 'ARCHWAY' | 'AVALANCHE' | 'AXELAR' | 'BASE' | 'BERACHAIN' | 'BINANCE' | 'BITCOIN' | 'BLAST' | 'BOB' | 'CELESTIA' | 'CELO' | 'COSMOS' | 'DYDX' | 'DYMENSION' | 'ELYS' | 'ETHEREUM' | 'EVMOS' | 'INJECTIVE' | 'KAVA' | 'LINEA' | 'MANTA' | 'MANTLE' | 'MONAD' | 'MOVEMENT' | 'NEAR' | 'NEUTRON' | 'NIBIRU' | 'OFF_CHAIN' | 'OPTIMISM' | 'ORAI' | 'OSMOSIS' | 'PERSISTENCE' | 'POLYGON' | 'ROME' | 'SCROLL' | 'SEI' | 'SOLANA' | 'SONIC' | 'SUI' | 'SWELLCHAIN' | 'THE_ROOT_NETWORK' | 'XION' | 'ZKSYNC';
/** Web3 Target */
type Web3Target = {
    __typename?: 'Web3Target';
    accountId?: Maybe<Scalars['String']['output']>;
    createdDate: Scalars['DateTime']['output'];
    id: Scalars['String']['output'];
    isConfirmed: Scalars['Boolean']['output'];
    name?: Maybe<Scalars['String']['output']>;
    senderAddress?: Maybe<Scalars['String']['output']>;
    targetProtocol: Web3TargetProtocol;
    updatedDate: Scalars['DateTime']['output'];
    walletBlockchain: WalletBlockchain;
};
type Web3TargetProtocol = 'XMTP';
type Web3TargetFragmentFragment = {
    __typename?: 'Web3Target';
    id: string;
    name?: string | undefined;
    accountId?: string | undefined;
    walletBlockchain: WalletBlockchain;
    targetProtocol: Web3TargetProtocol;
    isConfirmed: boolean;
    senderAddress?: string | undefined;
};

type SignCoinbaseSignature = (frontendClient: NotifiFrontendClient, web3TargetId: Web3Target['id'], senderAddress: string) => Promise<Web3TargetFragmentFragment | undefined>;
type NotifiWalletTargetContextType = {
    isLoading: boolean;
    error: Error | null;
    signCoinbaseSignature: SignCoinbaseSignature;
};
type NotifiWalletTargetProviderProps = {
    walletWithSignParams: WalletWithSignParams;
};
declare const NotifiWalletTargetContextProvider: FC<React.PropsWithChildren<NotifiWalletTargetProviderProps>>;
declare const useWalletTargetContext: () => NotifiWalletTargetContextType;

type NotifiContextProviderWithWalletTargetPluginProps = NotifiContextProviderProps;
declare const NotifiContextProviderWithWalletTargetPlugin: FC<PropsWithChildren<NotifiContextProviderProps>>;

export { NotifiContextProviderWithWalletTargetPlugin, type NotifiContextProviderWithWalletTargetPluginProps, NotifiWalletTargetContextProvider, type NotifiWalletTargetContextType, type NotifiWalletTargetProviderProps, type SignCoinbaseSignature, useWalletTargetContext };
