import Observable from 'zen-observable-ts';
import { GraphQLRequest, NextLink, Operation, RequestHandler, FetchResult } from './types';
export declare const empty: () => ApolloLink;
export declare const from: (links: ApolloLink[]) => ApolloLink;
export declare const split: (test: (op: Operation) => boolean, left: ApolloLink | RequestHandler, right?: ApolloLink | RequestHandler) => ApolloLink;
export declare const concat: (first: ApolloLink | RequestHandler, second: ApolloLink | RequestHandler) => ApolloLink;
export declare class ApolloLink {
    constructor(request?: RequestHandler);
    static empty: () => ApolloLink;
    static from: (links: ApolloLink[]) => ApolloLink;
    static split: (test: (op: Operation) => boolean, left: ApolloLink | RequestHandler, right?: ApolloLink | RequestHandler) => ApolloLink;
    static execute: typeof execute;
    split(test: (op: Operation) => boolean, left: ApolloLink | RequestHandler, right?: ApolloLink | RequestHandler): ApolloLink;
    concat(next: ApolloLink | RequestHandler): ApolloLink;
    request(operation: Operation, forward?: NextLink): Observable<FetchResult> | null;
}
export declare function execute(link: ApolloLink, operation: GraphQLRequest): Observable<FetchResult>;