import { Squid } from '@0xsquid/sdk';
import { PurchaseItem, TokenInfo } from '@imtbl/checkout-sdk';
import { Chain, Token, RouteData } from '../../../lib/squid/types';
import { OrderQuoteResponse, SignResponse } from '../../../lib/primary-sales';
export interface PurchaseState {
    id: string;
    squid: {
        squid: Squid | null;
        chains: Chain[] | null;
        tokens: Token[] | null;
    };
    items: PurchaseItem[];
    selectedToken: TokenInfo | undefined;
    selectedRouteData: RouteData | undefined;
    quote: OrderQuoteResponse | null;
    signResponse: SignResponse | undefined;
}
export declare const initialPurchaseState: PurchaseState;
export interface PurchaseContextState {
    purchaseState: PurchaseState;
    purchaseDispatch: React.Dispatch<PurchaseAction>;
}
export interface PurchaseAction {
    payload: ActionPayload;
}
type ActionPayload = SetId | SetSquid | SetItems | SetSelectedToken | SetSelectedRouteData | SetSquidChains | SetSquidTokens | SetItems | SetQuote | SetSignResponse;
export declare enum PurchaseActions {
    SET_ID = "SET_ID",
    SET_SQUID = "SET_SQUID",
    SET_SQUID_CHAINS = "SET_SQUID_CHAINS",
    SET_SQUID_TOKENS = "SET_SQUID_TOKENS",
    SET_ITEMS = "SET_ITEMS",
    SET_SELECTED_TOKEN = "SET_SELECTED_TOKEN",
    SET_SELECTED_ROUTE_DATA = "SET_SELECTED_ROUTE_DATA",
    SET_QUOTE = "SET_QUOTE",
    SET_SIGN_RESPONSE = "SET_SIGN_RESPONSE"
}
export interface SetId {
    type: PurchaseActions.SET_ID;
    id: string;
}
export interface SetSquid {
    type: PurchaseActions.SET_SQUID;
    squid: Squid;
}
export interface SetSquidChains {
    type: PurchaseActions.SET_SQUID_CHAINS;
    chains: Chain[];
}
export interface SetSquidTokens {
    type: PurchaseActions.SET_SQUID_TOKENS;
    tokens: Token[];
}
export interface SetItems {
    type: PurchaseActions.SET_ITEMS;
    items: PurchaseItem[];
}
export interface SetSignResponse {
    type: PurchaseActions.SET_SIGN_RESPONSE;
    signResponse: SignResponse;
}
export interface SetSelectedToken {
    type: PurchaseActions.SET_SELECTED_TOKEN;
    selectedToken: TokenInfo;
}
export interface SetSelectedRouteData {
    type: PurchaseActions.SET_SELECTED_ROUTE_DATA;
    selectedRouteData: RouteData;
}
export interface SetQuote {
    type: PurchaseActions.SET_QUOTE;
    quote: OrderQuoteResponse;
}
export declare const PurchaseContext: import("react").Context<PurchaseContextState>;
export type Reducer<S, A> = (prevState: S, action: A) => S;
export declare const purchaseReducer: Reducer<PurchaseState, PurchaseAction>;
export declare function usePurchaseContext(): PurchaseContextState;
export {};
