interface GenerateArrayMutationsParams<T> {
    current: T[] | null | undefined;
    original: T[] | null | undefined;
    generateCreateMutation: (item: T) => string;
    generateDeleteMutation: (item: T) => string;
    prefix?: string;
}
interface GenerateArrayMutationsWithUpdates<T> {
    generateUpdateMutation: (item: T) => string;
    key: keyof T;
}
/**
 * This method will generate an array of mutation documents based on the changes between the `original` and the `current` values.
 * It will detect the added and removed items and will call the `generateCreateMutation` or `generateDeleteMutation` for each of the differences.
 * The methods are expected to return the GraphQL mutation call that needs to be executed to perform that adding or removing on the backend service.
 *
 * The method will return an array with all create and delete mutations that were created.
 * The result can be used to wrap it into a GraphQL `mutation` like that:
 * ```
 * const mutation = `mutation MyArrayUpdate {
 *                     ${generateArrayMutations({
 *                        current: [1,2,3],
 *                        original: [1,2],
 *                        generateCreateMutation: createFn,
 *                        generateDeleteMutation: deleteFn}).join('\n')}}
 *                   }`
 * ```
 *
 * @param current The values after the changes
 * @param original The original values before the changes
 * @param generateCreateMutation This method will be called for each created item. It should return a string representing the create mutation (without the surrounding `mutation MyMutation {}` wrapper)
 * @param generateDeleteMutation This method will be called for each deleted item. It should return a string representing the create mutation (without the surrounding `mutation MyMutation {}` wrapper)
 * @param prefix Prefix for the create/delete mutation aliases.
 */
export declare function generateArrayMutations<T>(props: GenerateArrayMutationsParams<T>): string[];
/**
 * This method will generate an array of mutation documents based on the changes between the `original` and the `current` values.
 * It will detect the added and removed items using the `key` and will call the `generateCreateMutation`, `generateDeleteMutation`, `generateUpdateMutation` for each of the differences.
 * The methods are expected to return the GraphQL mutation call that needs to be executed to perform that adding or removing on the backend service.
 *
 * The method will return an array with all create and delete mutations that were created.
 * The result can be used to wrap it into a GraphQL `mutation` like that:
 * ```
 * const mutation = `mutation MyArrayUpdate {
 *                     ${generateArrayMutationsWithUpdates({
 *                        current: [{id: 1, value: 'ONE'},{id: 2, value: 'TWO'},{id: 3, value: 'THREE'}],
 *                        original: [{id: 1, value: 'ONE'},{id: 2, value: 'TWO'}],
 *                        generateCreateMutation: createFn,
 *                        generateDeleteMutation: deleteFn,
 *                        generateUpdateMutation: updateFn,
 *                        key: 'id'}).join('\n')}}
 *                   }`
 * ```
 *
 * @param current The values after the changes
 * @param original The original values before the changes
 * @param generateCreateMutation This method will be called for each created item. It should return a string representing the create mutation (without the surrounding `mutation MyMutation {}` wrapper)
 * @param generateDeleteMutation This method will be called for each deleted item. It should return a string representing the create mutation (without the surrounding `mutation MyMutation {}` wrapper)
 * @param generateUpdateMutation This method will be called for each deleted item. It should return a string representing the create mutation (without the surrounding `mutation MyMutation {}` wrapper)
 * @param key Object Key which will be used for comparison
 * @param prefix Prefix for the create/delete mutation aliases.
 */
export declare function generateArrayMutationsWithUpdates<T>(props: GenerateArrayMutationsParams<T> & GenerateArrayMutationsWithUpdates<T>): string[];
export {};
//# sourceMappingURL=generateArrayMutations.d.ts.map