declare type DirectionFunc<T> = () => T;
export interface DirectionAdt {
    fold: <T>(southeast: DirectionFunc<T>, southwest: DirectionFunc<T>, northeast: DirectionFunc<T>, northwest: DirectionFunc<T>, south: DirectionFunc<T>, north: DirectionFunc<T>, east: DirectionFunc<T>, west: DirectionFunc<T>) => T;
    match: <T>(branches: {
        southeast: DirectionFunc<T>;
        southwest: DirectionFunc<T>;
        northeast: DirectionFunc<T>;
        northwest: DirectionFunc<T>;
        south: DirectionFunc<T>;
        north: DirectionFunc<T>;
        east: DirectionFunc<T>;
        west: DirectionFunc<T>;
    }) => T;
    log: (label: string) => void;
}
declare const cata: <B>(subject: DirectionAdt, southeast: DirectionFunc<B>, southwest: DirectionFunc<B>, northeast: DirectionFunc<B>, northwest: DirectionFunc<B>, south: DirectionFunc<B>, north: DirectionFunc<B>, east: DirectionFunc<B>, west: DirectionFunc<B>) => B;
declare const cataVertical: <B>(subject: DirectionAdt, south: DirectionFunc<B>, middle: DirectionFunc<B>, north: DirectionFunc<B>) => B;
declare const cataHorizontal: <B>(subject: DirectionAdt, east: DirectionFunc<B>, middle: DirectionFunc<B>, west: DirectionFunc<B>) => B;
declare const southeast: DirectionFunc<DirectionAdt>;
declare const southwest: DirectionFunc<DirectionAdt>;
declare const northeast: DirectionFunc<DirectionAdt>;
declare const northwest: DirectionFunc<DirectionAdt>;
declare const south: DirectionFunc<DirectionAdt>;
declare const north: DirectionFunc<DirectionAdt>;
declare const east: DirectionFunc<DirectionAdt>;
declare const west: DirectionFunc<DirectionAdt>;
export { southeast, southwest, northeast, northwest, south, north, east, west, cata, cataVertical, cataHorizontal };
//# sourceMappingURL=Direction.d.ts.map