import { ApolloCache, OperationVariables, DocumentNode, TypedDocumentNode, MissingFieldError, DataState, ErrorLike, NetworkStatus, GetDataState, SubscribeToMoreUpdateQueryFn, DefaultContext, Unmasked, MutationQueryReducersMap, NormalizedExecutionResult, InternalRefetchQueriesInclude, MutationUpdaterFunction, OnQueryUpdated, ErrorPolicy, MutationFetchPolicy, WatchQueryFetchPolicy, ApolloClient, RefetchWritePolicy, FetchPolicy, ObservableQuery, UpdateQueryMapFn, StoreObject, Reference, FragmentType } from '@apollo/client';
export { ApolloCache, ApolloClient, Cache, CombinedGraphQLErrors, CombinedProtocolErrors, DataState, DefaultContext, DocumentNode, ErrorLike, ErrorPolicy, FetchPolicy, GetDataState, InMemoryCache, LinkError, MissingFieldError, NetworkStatus, NormalizedCache, NormalizedCacheObject, OperationVariables, ServerError, ServerParseError, StoreObject, TypedDocumentNode, UnconventionalError, UpdateQueryOptions, gql } from '@apollo/client';
import { DeepPartial } from '@apollo/client/utilities';
export { DeepPartial } from '@apollo/client/utilities';
import { Observable, OperatorFunction } from 'rxjs';
import { IgnoreModifier, MissingTree } from '@apollo/client/cache';
import { VariablesOption } from '@apollo/client/utilities/internal';
import * as i0 from '@angular/core';
import { Injector, Signal, WritableSignal, InjectionToken, Type, Provider, EnvironmentProviders } from '@angular/core';

interface CacheWatchQueryOptions<TData, TVariables> {
    query: DocumentNode | TypedDocumentNode<TData, TVariables>;
    variables?: TVariables;
    optimistic?: boolean;
    immediate?: boolean;
    /**
     * If set to true, the observable will emit the partial data that is available in the cache.
     * If set to false, the observable will throw an error if the complete data is not available in the cache.
     * @default false
     */
    returnPartialData?: boolean;
}
interface CacheWatchQueryCompleteResult<TData> {
    data: TData;
    complete: true;
    missing?: never;
}
interface CacheWatchQueryPartialResult<TData> {
    data: DeepPartial<TData> | undefined;
    complete: false;
    missing?: Array<MissingFieldError>;
}
type CacheWatchQueryResult<TData> = CacheWatchQueryCompleteResult<TData> | CacheWatchQueryPartialResult<TData>;
interface ApolloCacheEx extends ApolloCache {
    /**
     * Watches the cache store for the query document provided.
     */
    watchQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: CacheWatchQueryOptions<TData, TVariables> & {
        returnPartialData: true;
    }): Observable<CacheWatchQueryPartialResult<TData>>;
    watchQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: CacheWatchQueryOptions<TData, TVariables>): Observable<CacheWatchQueryCompleteResult<TData>>;
}

interface ApolloOptions extends ApolloClient.Options {
    /**
     * Client identifier in a multi-client setup
     */
    id?: string;
    defaultOptions?: DefaultOptions;
}
interface DefaultOptions {
    watchQuery?: Partial<WatchQueryOptions<any, any>>;
    query?: Partial<QueryOptions<any, any>>;
    mutate?: Partial<MutationOptions<any, any, any>>;
}
type WatchQueryOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = {
    /**
    * Specifies how the query interacts with the Apollo Client cache during execution (for example, whether it checks the cache for results before sending a request to the server).
    *
    * For details, see [Setting a fetch policy](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy).
    *
    * The default value is `cache-first`.
    *
    * @docGroup 3. Caching options
    */
    fetchPolicy?: WatchQueryFetchPolicy;
    /**
    * Specifies the `FetchPolicy` to be used after this query has completed.
    *
    * @docGroup 3. Caching options
    */
    nextFetchPolicy?: ApolloClient.WatchQueryOptions<TData, TVariables>['nextFetchPolicy'];
    /**
    * Defaults to the initial value of options.fetchPolicy, but can be explicitly
    * configured to specify the WatchQueryFetchPolicy to revert back to whenever
    * variables change (unless nextFetchPolicy intervenes).
    *
    * @docGroup 3. Caching options
    */
    initialFetchPolicy?: WatchQueryFetchPolicy;
    /**
    * Specifies whether a `NetworkStatus.refetch` operation should merge
    * incoming field data with existing data, or overwrite the existing data.
    * Overwriting is probably preferable, but merging is currently the default
    * behavior, for backwards compatibility with Apollo Client 3.x.
    *
    * @docGroup 3. Caching options
    */
    refetchWritePolicy?: RefetchWritePolicy;
    /**
    * Specifies how the query handles a response that returns both GraphQL errors and partial results.
    *
    * For details, see [GraphQL error policies](https://www.apollographql.com/docs/react/data/error-handling/#graphql-error-policies).
    *
    * The default value is `none`, meaning that the query result includes error details but not partial results.
    *
    * @docGroup 1. Operation options
    */
    errorPolicy?: ErrorPolicy;
    /**
    * If you're using [Apollo Link](https://www.apollographql.com/docs/react/api/link/introduction/), this object is the initial value of the `context` object that's passed along your link chain.
    *
    * @docGroup 2. Networking options
    */
    context?: DefaultContext;
    /**
    * Specifies the interval (in milliseconds) at which the query polls for updated results.
    *
    * The default value is `0` (no polling).
    *
    * @docGroup 2. Networking options
    */
    pollInterval?: number;
    /**
    * If `true`, the in-progress query's associated component re-renders whenever the network status changes or a network error occurs.
    *
    * The default value is `true`.
    *
    * @docGroup 2. Networking options
    */
    notifyOnNetworkStatusChange?: boolean;
    /**
    * If `true`, the query can return partial results from the cache if the cache doesn't contain results for all queried fields.
    *
    * The default value is `false`.
    *
    * @docGroup 3. Caching options
    */
    returnPartialData?: boolean;
    /**
    * A callback function that's called whenever a refetch attempt occurs
    * while polling. If the function returns `true`, the refetch is
    * skipped and not reattempted until the next poll interval.
    *
    * @docGroup 2. Networking options
    */
    skipPollAttempt?: () => boolean;
    /**
    * A GraphQL query string parsed into an AST with the gql template literal.
    *
    * @docGroup 1. Operation options
    */
    query: DocumentNode | TypedDocumentNode<TData, TVariables>;
    /**
     * Whether or not observers should receive initial network loading status when subscribing to this observable.
     * @default true
     */
    notifyOnLoading?: boolean;
} & VariablesOption<NoInfer<TVariables>>;
type QueryOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = {
    /**
    * A GraphQL query string parsed into an AST with the gql template literal.
    *
    * @docGroup 1. Operation options
    */
    query: DocumentNode | TypedDocumentNode<TData, TVariables>;
    /**
    * Specifies how the query handles a response that returns both GraphQL errors and partial results.
    *
    * For details, see [GraphQL error policies](https://www.apollographql.com/docs/react/data/error-handling/#graphql-error-policies).
    *
    * The default value is `none`, meaning that the query result includes error details but not partial results.
    *
    * @docGroup 1. Operation options
    */
    errorPolicy?: ErrorPolicy;
    /**
    * If you're using [Apollo Link](https://www.apollographql.com/docs/react/api/link/introduction/), this object is the initial value of the `context` object that's passed along your link chain.
    *
    * @docGroup 2. Networking options
    */
    context?: DefaultContext;
    /**
    * Specifies how the query interacts with the Apollo Client cache during execution (for example, whether it checks the cache for results before sending a request to the server).
    *
    * For details, see [Setting a fetch policy](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy).
    *
    * The default value is `cache-first`.
    *
    * @docGroup 3. Caching options
    */
    fetchPolicy?: FetchPolicy;
    /**
     * Whether or not observers should receive initial network loading status when subscribing to this observable.
     * @default false
     */
    notifyOnLoading?: boolean;
    /**
     * Throw errors on the observable's error stream instead of assigning them to the error property of the result object.
     * @default true
     */
    throwError?: boolean;
} & VariablesOption<NoInfer<TVariables>>;
type SubscriptionOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = {
    /**
    * A GraphQL document, often created with `gql` from the `graphql-tag`
    * package, that contains a single subscription inside of it.
    */
    subscription: DocumentNode | TypedDocumentNode<TData, TVariables>;
    /**
    * How you want your component to interact with the Apollo cache. For details, see [Setting a fetch policy](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy).
    */
    fetchPolicy?: FetchPolicy;
    /**
    * Specifies the `ErrorPolicy` to be used for this operation
    */
    errorPolicy?: ErrorPolicy;
    /**
    * Shared context between your component and your network interface (Apollo Link).
    */
    context?: DefaultContext;
    /**
    * Shared context between your component and your network interface (Apollo Link).
    */
    extensions?: Record<string, any>;
} & VariablesOption<NoInfer<TVariables>>;
type MutationOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables, TCache extends ApolloCache = ApolloCache> = {
    /**
    * By providing either an object or a callback function that, when invoked after
    * a mutation, allows you to return optimistic data and optionally skip updates
    * via the `IGNORE` sentinel object, Apollo Client caches this temporary
    * (and potentially incorrect) response until the mutation completes, enabling
    * more responsive UI updates.
    *
    * For more information, see [Optimistic mutation results](https://www.apollographql.com/docs/react/performance/optimistic-ui/).
    *
    * @docGroup 3. Caching options
    */
    optimisticResponse?: Unmasked<NoInfer<TData>> | ((vars: TVariables, { IGNORE }: {
        IGNORE: IgnoreModifier;
    }) => Unmasked<NoInfer<TData>> | IgnoreModifier);
    /**
    * A `MutationQueryReducersMap`, which is map from query names to
    * mutation query reducers. Briefly, this map defines how to incorporate the
    * results of the mutation into the results of queries that are currently
    * being watched by your application.
    */
    updateQueries?: MutationQueryReducersMap<TData>;
    /**
    * An array (or a function that _returns_ an array) that specifies which queries you want to refetch after the mutation occurs.
    *
    * Each array value can be either:
    *
    * - An object containing the `query` to execute, along with any `variables`
    *
    * - A string indicating the operation name of the query to refetch
    *
    * @docGroup 1. Operation options
    */
    refetchQueries?: ((result: NormalizedExecutionResult<Unmasked<TData>>) => InternalRefetchQueriesInclude) | InternalRefetchQueriesInclude;
    /**
    * If `true`, makes sure all queries included in `refetchQueries` are completed before the mutation is considered complete.
    *
    * The default value is `false` (queries are refetched asynchronously).
    *
    * @docGroup 1. Operation options
    */
    awaitRefetchQueries?: boolean;
    /**
    * A function used to update the Apollo Client cache after the mutation completes.
    *
    * For more information, see [Updating the cache after a mutation](https://www.apollographql.com/docs/react/data/mutations#updating-the-cache-after-a-mutation).
    *
    * @docGroup 3. Caching options
    */
    update?: MutationUpdaterFunction<TData, TVariables, TCache>;
    /**
    * Optional callback for intercepting queries whose cache data has been updated by the mutation, as well as any queries specified in the `refetchQueries: [...]` list passed to `client.mutate`.
    *
    * Returning a `Promise` from `onQueryUpdated` will cause the final mutation `Promise` to await the returned `Promise`. Returning `false` causes the query to be ignored.
    *
    * @docGroup 1. Operation options
    */
    onQueryUpdated?: OnQueryUpdated<any>;
    /**
    * Specifies how the mutation handles a response that returns both GraphQL errors and partial results.
    *
    * For details, see [GraphQL error policies](https://www.apollographql.com/docs/react/data/error-handling/#graphql-error-policies).
    *
    * The default value is `none`, meaning that the mutation result includes error details but _not_ partial results.
    *
    * @docGroup 1. Operation options
    */
    errorPolicy?: ErrorPolicy;
    /**
    * If you're using [Apollo Link](https://www.apollographql.com/docs/react/api/link/introduction/), this object is the initial value of the `context` object that's passed along your link chain.
    *
    * @docGroup 2. Networking options
    */
    context?: DefaultContext;
    /**
    * Provide `no-cache` if the mutation's result should _not_ be written to the Apollo Client cache.
    *
    * The default value is `network-only` (which means the result _is_ written to the cache).
    *
    * Unlike queries, mutations _do not_ support [fetch policies](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy) besides `network-only` and `no-cache`.
    *
    * @docGroup 3. Caching options
    */
    fetchPolicy?: MutationFetchPolicy;
    /**
    * To avoid retaining sensitive information from mutation root field
    * arguments, Apollo Client v3.4+ automatically clears any `ROOT_MUTATION`
    * fields from the cache after each mutation finishes. If you need this
    * information to remain in the cache, you can prevent the removal by passing
    * `keepRootFields: true` to the mutation. `ROOT_MUTATION` result data are
    * also passed to the mutation `update` function, so we recommend obtaining
    * the results that way, rather than using this option, if possible.
    */
    keepRootFields?: boolean;
    /**
    * A GraphQL document, often created with `gql` from the `graphql-tag`
    * package, that contains a single mutation inside of it.
    *
    * @docGroup 1. Operation options
    */
    mutation: DocumentNode | TypedDocumentNode<TData, TVariables>;
} & VariablesOption<NoInfer<TVariables>>;
interface ExtraWatchQueryOptions {
    /**
     * Whether or not observers should receive initial network loading status when subscribing to this observable.
     * @default true
     */
    notifyOnLoading?: boolean;
}
interface ExtraQueryOptions {
    /**
     * Whether or not observers should receive initial network loading status when subscribing to this observable.
     * @default true
     */
    notifyOnLoading?: boolean;
    /**
     * Throw errors on the observable's error stream instead of assigning them to the error property of the result object.
     * @default true
     */
    throwError?: boolean;
}
interface SubscribeToMoreOptions<TData = unknown, TSubscriptionVariables extends OperationVariables = OperationVariables, TSubscriptionData = TData, TVariables extends OperationVariables = TSubscriptionVariables> {
    subscription: DocumentNode | TypedDocumentNode<TSubscriptionData, TSubscriptionVariables>;
    variables?: TSubscriptionVariables;
    updateQuery?: SubscribeToMoreUpdateQueryFn<TData, TVariables, TSubscriptionData>;
    onError?: (error: ErrorLike) => void;
    context?: DefaultContext;
}
type QueryResult<TData, TStates extends DataState<TData>['dataState'] = DataState<TData>['dataState']> = {
    /**
    * A single ErrorLike object describing the error that occurred during the latest
    * query execution.
    *
    * For more information, see [Handling operation errors](https://www.apollographql.com/docs/react/data/error-handling/).
    *
    * @docGroup 1. Operation data
    */
    error?: ErrorLike;
    /**
    * If `true`, the query is still in flight.
    *
    * @docGroup 2. Network info
    */
    loading: boolean;
    /**
    * A number indicating the current network state of the query's associated request. [See possible values.](https://github.com/apollographql/apollo-client/blob/d96f4578f89b933c281bb775a39503f6cdb59ee8/src/core/networkStatus.ts#L4)
    *
    * Used in conjunction with the [`notifyOnNetworkStatusChange`](#notifyonnetworkstatuschange) option.
    *
    * @docGroup 2. Network info
    */
    networkStatus: NetworkStatus;
    /**
     * An object containing the result from the most recent _previous_ execution of this query.
     *
     * This value is `undefined` if this is the query's first execution.
     */
    previousData?: GetData<TData, TStates>;
} & GetDataState<TData, TStates>;
type GetData<TData, TState extends DataState<TData>['dataState']> = GetDataState<TData, TState>['data'];
interface SingleQueryResult<TData = unknown> {
    /**
    * An object containing the result of your GraphQL query after it completes.
    *
    * This value might be `undefined` if a query results in one or more errors (depending on the query's `errorPolicy`).
    *
    * @docGroup 1. Operation data
    */
    data: TData | undefined;
    /**
    * A single ErrorLike object describing the error that occurred during the latest
    * query execution.
    *
    * For more information, see [Handling operation errors](https://www.apollographql.com/docs/react/data/error-handling/).
    *
    * @docGroup 1. Operation data
    */
    error?: ErrorLike;
}
interface MutationResult<TData = unknown> {
    data: TData | undefined;
    error?: ErrorLike;
    extensions?: Record<string, any>;
}
interface SubscriptionResult<TData = unknown> {
    data?: TData;
    error?: ErrorLike;
    extensions?: Record<string, any>;
}

declare class QueryObservable<TData = unknown, TVariables extends OperationVariables = OperationVariables, TStates extends DataState<TData>['dataState'] = DataState<TData>['dataState']> extends Observable<QueryResult<TData, TStates>> {
    private readonly observableQuery;
    private previousData;
    constructor(observableQuery: ObservableQuery<TData, TVariables>, { notifyOnLoading }: ExtraWatchQueryOptions);
    get query(): TypedDocumentNode<TData, TVariables>;
    get variables(): TVariables | undefined;
    get options(): ObservableQuery.Options<TData, TVariables>;
    get queryName(): string | undefined;
    getCurrentResult(): QueryResult<TData, TStates>;
    /**
     * Update the variables of this observable query, and fetch the new results.
     * This method should be preferred over `setVariables` in most use cases.
     *
     * Returns a `ResultPromise` with an additional `.retain()` method. Calling
     * `.retain()` keeps the network operation running even if the `ObservableQuery`
     * no longer requires the result.
     *
     * Note: `refetch()` guarantees that a value will be emitted from the
     * observable, even if the result is deep equal to the previous value.
     *
     * @param variables - The new set of variables. If there are missing variables,
     * the previous values of those variables will be used.
     */
    refetch(variables?: Partial<TVariables>): Promise<SingleQueryResult<TData>>;
    fetchMore<TFetchData = TData, TFetchVars extends OperationVariables = TVariables>(options: ObservableQuery.FetchMoreOptions<TData, TVariables, TFetchData, TFetchVars>): Promise<SingleQueryResult<TFetchData>>;
    subscribeToMore<TSubscriptionData = TData, TSubscriptionVariables extends OperationVariables = TVariables>(options: SubscribeToMoreOptions<TData, TSubscriptionVariables, TSubscriptionData, TVariables>): () => void;
    /**
     * Update the variables of this observable query, and fetch the new results
     * if they've changed. Most users should prefer `refetch` instead of
     * `setVariables` in order to to be properly notified of results even when
     * they come from the cache.
     *
     * Note: `setVariables()` guarantees that a value will be emitted from the
     * observable, even if the result is deeply equal to the previous value.
     *
     * Note: the promise will resolve with the last emitted result
     * when either the variables match the current variables or there
     * are no subscribers to the query.
     *
     * @param variables - The new set of variables. If there are missing variables,
     * the previous values of those variables will be used.
     */
    setVariables(variables: TVariables): Promise<SingleQueryResult<TData>>;
    /**
     * A function that enables you to update the query's cached result without executing a followup GraphQL operation.
     *
     * See [using updateQuery and updateFragment](https://www.apollographql.com/docs/react/caching/cache-interaction/#using-updatequery-and-updatefragment) for additional information.
     */
    updateQuery(mapFn: UpdateQueryMapFn<TData, TVariables>): void;
    /**
     * A function that instructs the query to begin re-executing at a specified interval (in milliseconds).
     */
    startPolling(pollInterval: number): void;
    /**
     * A function that instructs the query to stop polling after a previous call to `startPolling`.
     */
    stopPolling(): void;
    /**
     * Reevaluate the query, optionally against new options. New options will be
     * merged with the current options when given.
     *
     * Note: `variables` can be reset back to their defaults (typically empty) by calling `reobserve` with
     * `variables: undefined`.
     */
    reobserve(newOptions?: Partial<WatchQueryOptions<TData, TVariables>>): Promise<SingleQueryResult<TData>>;
    hasObservers(): boolean;
    /**
     * Tears down the `ObservableQuery` and stops all active operations by sending a `complete` notification.
     */
    stop(): void;
}

interface SignalCacheQueryOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> {
    /**
     * A GraphQL query document parsed into an AST by gql.
     */
    query: DocumentNode | TypedDocumentNode<TData, TVariables>;
    /**
     * An object containing all of the variables your query needs to execute.
     * Can be provided as a static object, a signal, or a function that returns the variables.
     * When provided as a function, it will be executed in a computed context and will
     * automatically re-execute the query when any reactive dependencies change.
     */
    variables?: NoInfer<TVariables> | (() => NoInfer<TVariables>);
    /**
     * If `true`, the query will be evaluated against both the optimistic cache layer
     * and the normal cache layer. This allows optimistic updates to be reflected
     * in the query results immediately.
     * @default true
     */
    optimistic?: boolean;
    immediate?: boolean;
    /**
     * If set to `true`, the observable will emit the partial data that is available in the cache.
     * If set to `false`, the observable will throw an error if the complete data is not available in the cache.
     * @default false
     */
    returnPartialData?: boolean;
    /**
     * Custom injector to use for this signal.
     */
    injector?: Injector;
}
type SignalCacheQueryResult<TData> = TData extends undefined ? CacheWatchQueryPartialResult<TData> : CacheWatchQueryCompleteResult<TData>;
declare class SignalCacheQuery<TData, TVariables extends OperationVariables = OperationVariables> {
    private readonly cache;
    private readonly options;
    /**
     * The cache query result, containing `data`, `complete`, and `missing`.
     */
    readonly result: Signal<SignalCacheQueryResult<TData>>;
    /**
     * The data returned by the cache query.
     */
    readonly data: Signal<TData>;
    /**
     * A signal indicating whether the query result contains complete data.
     * - `true`: All requested fields are available in the cache
     * - `false`: Some fields are missing from the cache
     * - `undefined`: Query has not been executed yet
     */
    readonly complete: Signal<boolean | undefined>;
    /**
     * A signal containing an array of missing field errors if the query is incomplete.
     * Will be `undefined` if the query is complete or has not been executed.
     */
    readonly missing: Signal<Array<MissingFieldError> | undefined>;
    private readonly _result;
    private readonly variables;
    private subscription;
    constructor(injector: Injector, cache: ApolloCacheEx, options: SignalCacheQueryOptions<TData, TVariables>);
    private subscribe;
}

type SignalFragmentResult<TData> = {
    data: TData;
    complete: true;
    missing?: never;
} | {
    data: DeepPartial<TData>;
    complete: false;
    missing?: MissingTree;
};
interface SignalFragmentOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> {
    /**
    * A GraphQL fragment document parsed into an AST with the `gql`
    * template literal.
    *
    * @docGroup 1. Required options
    */
    fragment: DocumentNode | TypedDocumentNode<TData, TVariables>;
    /**
    * An object containing a `__typename` and primary key fields
    * (such as `id`) identifying the entity object from which the fragment will
    * be retrieved, or a `{ __ref: "..." }` reference, or a `string` ID
    * (uncommon).
    *
    * @docGroup 1. Required options
    */
    from: StoreObject | Reference | FragmentType<NoInfer<TData>> | string | (() => StoreObject | Reference | FragmentType<NoInfer<TData>> | string);
    /**
    * Any variables that the GraphQL fragment may depend on.
    *
    * @docGroup 2. Cache options
    */
    variables?: NoInfer<TVariables> | (() => NoInfer<TVariables>);
    /**
    * The name of the fragment defined in the fragment document.
    *
    * Required if the fragment document includes more than one fragment,
    * optional otherwise.
    *
    * @docGroup 2. Cache options
    */
    fragmentName?: string;
    /**
    * If `true`, `watchFragment` returns optimistic results.
    *
    * The default value is `true`.
    *
    * @docGroup 2. Cache options
    */
    optimistic?: boolean;
    /**
     * Custom injector to use for this signal.
     */
    injector?: Injector;
}
declare class SignalFragment<TData, TVariables extends OperationVariables = OperationVariables> {
    private readonly apollo;
    private readonly options;
    /**
     * The fragment result, containing `data`, `complete`, and `missing`.
     */
    readonly result: Signal<SignalFragmentResult<TData>>;
    /**
     * The data returned by the fragment.
     */
    readonly data: Signal<DeepPartial<TData>>;
    /**
     * `true` if all requested fields in the fragment are present in the cache, `false` otherwise.
     */
    readonly complete: Signal<boolean>;
    /**
     * If `complete` is `false`, this field describes which fields are missing.
     */
    readonly missing: Signal<MissingTree | undefined>;
    private readonly _result;
    private readonly from;
    private readonly variables;
    private subscription;
    constructor(injector: Injector, apollo: Apollo, options: SignalFragmentOptions<TData, TVariables>);
    private subscribe;
}

interface SignalMutationResult<TData> extends MutationResult<TData> {
    loading: boolean;
    called: boolean;
}
type SignalMutationOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = Omit<SignalMutationExecutionOptions<TData, TVariables>, 'variables'>;
type SignalMutationExecutionOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = Omit<MutationOptions<TData, TVariables>, 'mutation'> & {
    /**
     * Callback executed when the mutation completes successfully.
     */
    onData?: (data: TData, options?: MutationOptions<TData, TVariables>) => void;
    /**
     * Callback executed when the mutation encounters an error.
     */
    onError?: (error: ErrorLike, options?: MutationOptions<TData, TVariables>) => void;
};
declare class SignalMutation<TData, TVariables extends OperationVariables = OperationVariables> {
    private readonly apollo;
    private readonly mutation;
    private readonly options?;
    /**
     * The mutation result, containing `data`, `loading`, and `error` and `called`.
     */
    readonly result: Signal<SignalMutationResult<TData>>;
    /**
     * If `true`, the mutation is currently in flight.
     */
    readonly loading: Signal<boolean>;
    /**
     * The data returned from the mutation.
     */
    readonly data: Signal<TData | undefined>;
    /**
     * The error encountered during the mutation.
     */
    readonly error: Signal<ErrorLike | undefined>;
    /**
     * If `true`, the mutation's mutate method has been called.
     */
    readonly called: Signal<boolean>;
    private readonly _result;
    private mutationId;
    constructor(apollo: Apollo, mutation: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: SignalMutationOptions<TData, TVariables> | undefined);
    /**
     * Execute the mutation with the provided variables and options.
     */
    mutate(...[executeOptions]: {} extends TVariables ? [executeOptions?: SignalMutationExecutionOptions<TData, TVariables>] : [executeOptions: SignalMutationExecutionOptions<TData, TVariables>]): Promise<MutationResult<TData>>;
    /**
     * Reset the mutation result to its initial state.
     */
    reset(): void;
}

type SignalVariablesOption<TVariables extends OperationVariables> = {} extends TVariables ? {
    /**
    * A function or signal returning an object containing all of the GraphQL variables your operation requires to execute.
    *
    * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.
    *
    * When `null` is returned, the operation will be terminated until a non-null value is returned again.
    */
    variables?: () => TVariables | undefined | null;
} : {
    /**
    * A function or signal returning an object containing all of the GraphQL variables your operation requires to execute.
    *
    * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.
    *
    * When `null` is returned, the operation will be terminated until a non-null value is returned again.
    */
    variables: () => TVariables | null;
};

declare class SignalQueryExecutionError extends Error {
    constructor(methodName: keyof SignalQuery<any, any>);
}
type SignalQueryOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = {
    /**
    * Specifies how the query interacts with the Apollo Client cache during execution (for example, whether it checks the cache for results before sending a request to the server).
    *
    * For details, see [Setting a fetch policy](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy).
    *
    * The default value is `cache-first`.
    *
    * @docGroup 3. Caching options
    */
    fetchPolicy?: WatchQueryFetchPolicy;
    /**
    * Specifies the `FetchPolicy` to be used after this query has completed.
    *
    * @docGroup 3. Caching options
    */
    nextFetchPolicy?: ApolloClient.WatchQueryOptions<TData, TVariables>['nextFetchPolicy'];
    /**
    * Defaults to the initial value of options.fetchPolicy, but can be explicitly
    * configured to specify the WatchQueryFetchPolicy to revert back to whenever
    * variables change (unless nextFetchPolicy intervenes).
    *
    * @docGroup 3. Caching options
    */
    initialFetchPolicy?: WatchQueryFetchPolicy;
    /**
    * Specifies whether a `NetworkStatus.refetch` operation should merge
    * incoming field data with existing data, or overwrite the existing data.
    * Overwriting is probably preferable, but merging is currently the default
    * behavior, for backwards compatibility with Apollo Client 3.x.
    *
    * @docGroup 3. Caching options
    */
    refetchWritePolicy?: RefetchWritePolicy;
    /**
    * Specifies how the query handles a response that returns both GraphQL errors and partial results.
    *
    * For details, see [GraphQL error policies](https://www.apollographql.com/docs/react/data/error-handling/#graphql-error-policies).
    *
    * The default value is `none`, meaning that the query result includes error details but not partial results.
    *
    * @docGroup 1. Operation options
    */
    errorPolicy?: ErrorPolicy;
    /**
    * If you're using [Apollo Link](https://www.apollographql.com/docs/react/api/link/introduction/), this object is the initial value of the `context` object that's passed along your link chain.
    *
    * @docGroup 2. Networking options
    */
    context?: DefaultContext;
    /**
    * Specifies the interval (in milliseconds) at which the query polls for updated results.
    *
    * The default value is `0` (no polling).
    *
    * @docGroup 2. Networking options
    */
    pollInterval?: number;
    /**
    * If `true`, the in-progress query's associated component re-renders whenever the network status changes or a network error occurs.
    *
    * The default value is `true`.
    *
    * @docGroup 2. Networking options
    */
    notifyOnNetworkStatusChange?: boolean;
    /**
    * If `true`, the query can return partial results from the cache if the cache doesn't contain results for all queried fields.
    *
    * The default value is `false`.
    *
    * @docGroup 3. Caching options
    */
    returnPartialData?: boolean;
    /**
    * A callback function that's called whenever a refetch attempt occurs
    * while polling. If the function returns `true`, the refetch is
    * skipped and not reattempted until the next poll interval.
    *
    * @docGroup 2. Networking options
    */
    skipPollAttempt?: () => boolean;
    /**
    * A GraphQL query string parsed into an AST with the gql template literal.
    *
    * @docGroup 1. Operation options
    */
    query: DocumentNode | TypedDocumentNode<TData, TVariables>;
    /**
     * Whether or not to track initial network loading status.
     * @default true
     */
    notifyOnLoading?: boolean;
    /**
     * Whether to execute query immediately or lazily via `execute` method.
     */
    lazy?: boolean;
    /**
     * Custom injector to use for this query.
     */
    injector?: Injector;
} & ({
    /**
     * Whether to execute query immediately or lazily via `execute` method.
     */
    lazy: true;
    /**
    * A function or signal returning an object containing all of the GraphQL variables your query requires to execute.
    *
    * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.
    *
    * When `null` is returned, the query will be terminated until a non-null value is returned again.
    */
    variables?: () => TVariables | undefined | null;
} | SignalVariablesOption<NoInfer<TVariables>>);
interface SignalQueryExecOptions<TVariables extends OperationVariables = OperationVariables> {
    /**
     * Variables to use for this query execution.
     */
    variables?: TVariables;
    /**
     * Context to use for this execution.
     */
    context?: DefaultContext;
}
declare class SignalQuery<TData, TVariables extends OperationVariables = OperationVariables, TStates extends DataState<TData>['dataState'] = 'empty' | 'complete' | 'streaming'> {
    private readonly apollo;
    private readonly options;
    /**
     * The query result, containing `data`, `loading`, `error`, `networkStatus`, `previousData`, `dataState`.
     */
    readonly result: Signal<QueryResult<TData, TStates>>;
    /**
     * If `true`, the query is currently in flight.
     */
    readonly loading: Signal<boolean>;
    /**
     * The current network status of the query.
     */
    readonly networkStatus: Signal<NetworkStatus>;
    /**
     * The data returned by the query, or `undefined` if loading, errored, or no data received yet.
     */
    readonly data: Signal<GetData<TData, TStates> | undefined>;
    /**
     * The data from the previous successful result, useful for displaying stale data during refetches.
     */
    readonly previousData: Signal<GetData<TData, TStates> | undefined>;
    /**
     * An error object if the query failed, `undefined` otherwise.
     */
    readonly error: Signal<ErrorLike | undefined>;
    /**
     * A writable signal that represents the current query variables.
     */
    readonly variables: WritableSignal<TVariables | undefined | null>;
    /**
     * Whether the query is currently active, subscribed to the underlying observable and receiving cache updates.
     */
    readonly active: Signal<boolean>;
    /**
     * Whether the query is currently enabled.
     *
     * This property starts as `true` for non-lazy queries and `false` for lazy queries.
     *
     * Calling `execute()` sets it to `true`, while calling `terminate()` sets it to `false`.
     *
     * When `true`:
     * - The query automatically executes when variables change from `null` to a non-null value
     * - Variable changes trigger re-execution with the new variables
     *
     * When `false`:
     * - Variable changes are ignored and do not trigger re-execution
     * - The query must be manually started via `execute()`
     *
     * Note: This is different from `active`, which indicates whether the query is currently connected to its observable and actively watching the cache.
     */
    readonly enabled: Signal<boolean>;
    private observable;
    private subscription;
    private readonly _active;
    private readonly _result;
    private readonly _enabled;
    constructor(injector: Injector, apollo: Apollo, options: SignalQueryOptions<TData, TVariables>);
    /**
     * Execute the query with the provided options.
     */
    execute(execOptions?: SignalQueryExecOptions<TVariables>): Promise<SingleQueryResult<TData>>;
    /**
     * Terminate query execution and unsubscribe from the observable.
    */
    terminate(): void;
    /**
     * Refetch the query with the current variables.
     */
    refetch(variables?: Partial<TVariables>): Promise<SingleQueryResult<TData>>;
    /**
     * Fetch more data and merge it with the existing result.
     */
    fetchMore<TFetchData = TData, TFetchVars extends OperationVariables = TVariables>(options: ObservableQuery.FetchMoreOptions<TData, TVariables, TFetchData, TFetchVars>): Promise<SingleQueryResult<TFetchData>>;
    /**
     * Update the query's cached data.
     */
    updateQuery(mapFn: UpdateQueryMapFn<TData, TVariables>): void;
    /**
     * Start polling the query.
     */
    startPolling(pollInterval: number): void;
    /**
     * Stop polling the query.
     */
    stopPolling(): void;
    /**
     * Subscribe to more data.
     */
    subscribeToMore<TSubscriptionData = TData, TSubscriptionVariables extends OperationVariables = TVariables>(options: SubscribeToMoreOptions<TData, TSubscriptionVariables, TSubscriptionData, TVariables>): () => void;
    private _execute;
    private _terminate;
}

type SignalSubscriptionOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = {
    /**
    * A GraphQL document, often created with `gql` from the `graphql-tag`
    * package, that contains a single subscription inside of it.
    */
    subscription: DocumentNode | TypedDocumentNode<TData, TVariables>;
    /**
    * How you want your component to interact with the Apollo cache. For details, see [Setting a fetch policy](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy).
    */
    fetchPolicy?: FetchPolicy;
    /**
    * Specifies the `ErrorPolicy` to be used for this operation
    */
    errorPolicy?: ErrorPolicy;
    /**
    * Shared context between your component and your network interface (Apollo Link).
    */
    context?: DefaultContext;
    /**
    * Shared context between your component and your network interface (Apollo Link).
    */
    extensions?: Record<string, any>;
    /**
     * Whether to execute subscription immediately or lazily via `execute` method.
     */
    lazy?: boolean;
    /**
     * Callback for when new data is received
     */
    onData?: (data: TData) => void;
    /**
     * Callback for when the subscription is completed
     */
    onComplete?: () => void;
    /**
     * Callback for when an error occurs
     */
    onError?: (error: ErrorLike) => void;
    /**
     * Custom injector to use for this subscription.
     */
    injector?: Injector;
} & ({
    /**
     * Whether to execute subscription immediately or lazily via `execute` method.
     */
    lazy: true;
    /**
    * A function or signal returning an object containing all of the GraphQL variables your operation requires to execute.
    *
    * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.*
    *
    * When `null` is returned, the subscription will be terminated until a non-null value is returned again.
    */
    variables?: () => TVariables | undefined | null;
} | SignalVariablesOption<NoInfer<TVariables>>);
interface SignalSubscriptionExecOptions<TVariables extends OperationVariables = OperationVariables> {
    /**
     * Variables to use for this query execution.
     */
    variables?: TVariables;
    /**
     * Context to use for this execution.
     */
    context?: DefaultContext;
}
interface SignalSubscriptionResult<TData> extends SubscriptionResult<TData> {
    /**
     * Whether the subscription is currently loading
     */
    loading: boolean;
}
declare class SignalSubscription<TData, TVariables extends OperationVariables = OperationVariables> {
    private readonly apollo;
    private readonly options;
    /**
     * The subscription result, containing `data`, `loading`, and `error`.
     */
    readonly result: Signal<SignalSubscriptionResult<TData>>;
    /**
     * If `true`, the subscription is currently loading the initial result.
     */
    readonly loading: Signal<boolean>;
    /**
     * The data returned by the subscription, or `undefined` if loading, errored, or no data received yet.
     */
    readonly data: Signal<TData | undefined>;
    /**
     * An error object if the subscription failed, `undefined` otherwise.
     */
    readonly error: Signal<ErrorLike | undefined>;
    /**
     * A writable signal that represents the current subscription variables.
     */
    readonly variables: WritableSignal<TVariables | undefined | null>;
    /**
     * Whether the subscription is currently active, connected to the server and receiving real-time updates.
     */
    readonly active: Signal<boolean>;
    /**
     * Whether the subscription is currently enabled.
     *
     * This property starts as `true` for non-lazy subscriptions and `false` for lazy subscriptions.
     *
     * Calling `execute()` sets it to `true`, while calling `terminate()` sets it to `false`.
     *
     * When `true`:
     * - The subscription automatically starts when variables change from `null` to a non-null value
     * - Variable changes trigger re-subscription with the new variables
     *
     * When `false`:
     * - Variable changes are ignored and do not trigger re-subscription
     * - The subscription must be manually started via `execute()`
     *
     * Note: This is different from `active`, which indicates whether the subscription is currently connected to the server and receiving real-time updates.
     */
    readonly enabled: Signal<boolean>;
    private subscription;
    private readonly _active;
    private readonly _result;
    private readonly _enabled;
    constructor(injector: Injector, apollo: Apollo, options: SignalSubscriptionOptions<TData, TVariables>);
    /**
     * Execute subscription.
     */
    execute(execOptions?: SignalSubscriptionExecOptions<TVariables>): void;
    /**
     * Terminate subscription.
     */
    terminate(): void;
    private _execute;
    private _terminate;
}

declare class ApolloSignal {
    private readonly apollo;
    constructor(apollo: Apollo);
    query<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: SignalQueryOptions<TData, TVariables> & {
        returnPartialData: true;
    }): SignalQuery<TData, TVariables, 'empty' | 'complete' | 'streaming' | 'partial'>;
    query<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: SignalQueryOptions<TData, TVariables>): SignalQuery<TData, TVariables, 'empty' | 'complete' | 'streaming'>;
    mutation<TData = unknown, TVariables extends OperationVariables = OperationVariables>(mutation: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: SignalMutationOptions<TData, TVariables>): SignalMutation<TData, TVariables>;
    subscription<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: SignalSubscriptionOptions<TData, TVariables>): SignalSubscription<TData, TVariables>;
    fragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: SignalFragmentOptions<TData, TVariables>): SignalFragment<TData, TVariables>;
    cacheQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: SignalCacheQueryOptions<TData, TVariables> & {
        returnPartialData: true;
    }): SignalCacheQuery<DeepPartial<TData> | undefined, TVariables>;
    cacheQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: SignalCacheQueryOptions<TData, TVariables>): SignalCacheQuery<TData, TVariables>;
}

declare class Apollo {
    /**
     * Instance of ApolloClient
     */
    readonly client: ApolloClient;
    readonly cache: ApolloCacheEx;
    readonly signal: ApolloSignal;
    private readonly defaultOptions?;
    constructor(client: ApolloClient, defaultOptions?: DefaultOptions);
    query<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: QueryOptions<TData, TVariables>): Observable<QueryResult<TData, 'empty' | 'complete'>>;
    watchQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: WatchQueryOptions<TData, TVariables> & {
        returnPartialData: true;
    }): QueryObservable<TData, TVariables, 'empty' | 'complete' | 'streaming' | 'partial'>;
    watchQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: WatchQueryOptions<TData, TVariables>): QueryObservable<TData, TVariables, 'empty' | 'complete' | 'streaming'>;
    watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables>): Observable<ApolloClient.WatchFragmentResult<TData>>;
    mutate<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: MutationOptions<TData, TVariables>): Observable<MutationResult<TData>>;
    subscribe<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: SubscriptionOptions<TData, TVariables>): Observable<SubscriptionResult<TData>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<Apollo, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<Apollo>;
}

type ApolloClientFactory = (options: ApolloClient.Options) => ApolloClient;
declare const APOLLO_CLIENT_FACTORY: InjectionToken<ApolloClientFactory>;

interface FragmentIdentifier<TData> {
    id: string;
    fragmentName: string;
    fragment: DocumentNode | TypedDocumentNode<TData>;
}
declare function identifyFragment<TData = unknown>(fragment: DocumentNode | TypedDocumentNode<TData>, id: string, fragmentName?: string): FragmentIdentifier<TData>;
declare function identifyFragmentType<TData = unknown>(fragment: DocumentNode | TypedDocumentNode<TData>, fragmentName?: string): string;

declare class ApolloRegistry {
    private readonly providers;
    private _instances;
    register(token: Type<any> | InjectionToken<Apollo>): void;
    get instances(): Array<Apollo>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ApolloRegistry, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ApolloRegistry>;
}

type ApolloInstanceFactory = (clientId: string, client: ApolloClient, defaultOptions?: DefaultOptions) => Apollo;
declare const APOLLO_INSTANCE_FACTORY: InjectionToken<ApolloInstanceFactory>;

declare function mapQuery<T, R, TStates extends DataState<T>['dataState']>(mapFn: (data: GetData<T, Exclude<TStates, 'empty'>>) => R | undefined): OperatorFunction<QueryResult<T, TStates>, QueryResult<R, TStates>>;
declare function mapMutation<T, R>(mapFn: (data: T) => R | undefined): OperatorFunction<MutationResult<T>, MutationResult<R>>;
declare function mapSubscription<T, R>(mapFn: (data: T) => R | undefined): OperatorFunction<SubscriptionResult<T>, SubscriptionResult<R>>;
declare function mapQueryResult<T, R, TStates extends DataState<T>['dataState']>(result: QueryResult<T, TStates>, mapFn: (data: GetData<T, Exclude<TStates, 'empty'>>) => R | undefined): QueryResult<R, TStates>;
declare function mapMutationResult<T, R>(result: MutationResult<T>, mapFn: (data: T) => R | undefined): MutationResult<R>;
declare function mapSubscriptionResult<T, R>(result: SubscriptionResult<T>, mapFn: (data: T) => R | undefined): SubscriptionResult<R>;

interface ApolloOrbitFeature {
    kind: `APOLLO_ORBIT_${string}`;
    providers: Array<Provider>;
}
declare function withApolloOptions(options: ApolloOptions): ApolloOrbitFeature;
declare function withApolloOptions(optionsFactory: () => ApolloOptions): ApolloOrbitFeature;
declare function provideApollo(...features: Array<ApolloOrbitFeature>): EnvironmentProviders;
declare function provideApolloInstance(token: Type<unknown> | InjectionToken<Apollo>, options: ApolloOptions | (() => ApolloOptions)): EnvironmentProviders;

declare const APOLLO_MULTI_ROOT: InjectionToken<boolean>;

export { APOLLO_CLIENT_FACTORY, APOLLO_MULTI_ROOT, Apollo, ApolloSignal, QueryObservable, SignalCacheQuery, SignalFragment, SignalMutation, SignalQuery, SignalQueryExecutionError, SignalSubscription, identifyFragment, identifyFragmentType, mapMutation, mapMutationResult, mapQuery, mapQueryResult, mapSubscription, mapSubscriptionResult, provideApollo, provideApolloInstance, withApolloOptions, APOLLO_INSTANCE_FACTORY as ɵAPOLLO_INSTANCE_FACTORY, ApolloRegistry as ɵApolloRegistry };
export type { ApolloCacheEx, ApolloClientFactory, ApolloOptions, ApolloOrbitFeature, CacheWatchQueryCompleteResult, CacheWatchQueryOptions, CacheWatchQueryPartialResult, CacheWatchQueryResult, DefaultOptions, ExtraQueryOptions, ExtraWatchQueryOptions, FragmentIdentifier, GetData, MutationOptions, MutationResult, QueryOptions, QueryResult, SignalCacheQueryOptions, SignalFragmentOptions, SignalFragmentResult, SignalMutationExecutionOptions, SignalMutationOptions, SignalMutationResult, SignalQueryExecOptions, SignalQueryOptions, SignalSubscriptionExecOptions, SignalSubscriptionOptions, SignalSubscriptionResult, SignalVariablesOption, SingleQueryResult, SubscribeToMoreOptions, SubscriptionOptions, SubscriptionResult, WatchQueryOptions, ApolloInstanceFactory as ɵApolloInstanceFactory };
