import * as react from 'react';
import { FarcasterFrameContext, FarcasterSignerState, SignerStateInstance } from '@frames.js/render';
import { FramePostPayload } from '@xmtp/frames-client';

declare function useFarcasterFrameContext({ fallbackContext, }: {
    fallbackContext: FarcasterFrameContext;
}): {
    frameContext: FarcasterFrameContext;
    setFrameContext: react.Dispatch<react.SetStateAction<FarcasterFrameContext | null>>;
    resetFrameContext: () => void;
};

declare function useFarcasterIdentity(): FarcasterSignerState & {
    impersonateUser: ({ fid }: {
        fid: number;
    }) => void;
};

type XmtpFrameContext = {
    conversationTopic: string;
    participantAccountAddresses: `0x${string}`[];
    groupId?: Uint8Array;
    groupSecret?: Uint8Array;
};
declare function useXmtpFrameContext({ fallbackContext, }: {
    fallbackContext: XmtpFrameContext;
}): {
    frameContext: XmtpFrameContext;
    setFrameContext: react.Dispatch<react.SetStateAction<XmtpFrameContext | null>>;
    resetFrameContext: () => void;
};

type XmtpSigner = {
    walletAddress: string;
    keys: Uint8Array;
};
type XmtpSignerInstance = SignerStateInstance<XmtpSigner, FramePostPayload, XmtpFrameContext>;
declare function useXmtpIdentity(): XmtpSignerInstance;

export { useFarcasterFrameContext, useFarcasterIdentity, useXmtpFrameContext, useXmtpIdentity };
