import { type Action, type Link, type Resolver, type Graph } from './types.js';
/**
* Takes a `Graph` and returns a flat array of links by performing a topographical sort and
* filter. For example, this graph
* ```
* ┌─ e ─ g ─┐
* ┌─ c ─ d ─┤ ├─ o(HEAD)
* a ─ b ─┤ └─── f ───┘
* └─ h ─ i(HEAD)
* ```
* might be transformed to this sequence
* ```
* [a, b, c, d, e, f, g, h, i]
* ```
*
* The logic for merging concurrent branches is captured in a `resolver` function provided by the
* caller. A resolver takes the graph as an argument, and returns two functions:
* - `sort` is a comparator function that indicates how concurrent branches are to be ordered.
* - `filter` is a predicate function that indicates which links to include in the resulting
* sequence.
*/
export declare const getSequence: (graph: Graph, resolver?: Resolver) => {
isInvalid: boolean;
hash: import("@localfirst/crypto").Hash;
body: import("./types.js").LinkBody;
}[];
export declare const baseResolver: Resolver;
export declare const noFilter: (_: Link) => boolean;
//# sourceMappingURL=getSequence.d.ts.map