import { Tensor } from './tensor';
import { NamedTensorMap } from './types';
export interface TapeNode {
    id: number;
    name: string;
    output: Tensor;
    inputs: NamedTensorMap;
    gradient?: (dy: Tensor | NamedTensorMap) => NamedGradientMap;
}
export declare type NamedGradientMap = {
    [inputName: string]: () => Tensor;
};
export declare function getFilteredNodesXToY(tape: TapeNode[], xs: Tensor[], y: Tensor): TapeNode[];
export declare function backpropagateGradients(tensorAccumulatedGradientMap: {
    [tensorId: number]: Tensor;
}, filteredTape: TapeNode[]): void;
