/**
* @since 0.6.0
*/
import { Alternative1 } from 'fp-ts/es6/Alternative';
import { Lazy } from 'fp-ts/es6/function';
import { Monad1 } from 'fp-ts/es6/Monad';
import { Monoid } from 'fp-ts/es6/Monoid';
import * as O from 'fp-ts/es6/Option';
import { RowLacks } from './helpers';
import { Route } from './route';
declare module 'fp-ts/es6/HKT' {
interface URItoKind {
'fp-ts-routing/Parser': Parser;
}
}
declare const PARSER_URI = "fp-ts-routing/Parser";
type PARSER_URI = typeof PARSER_URI;
/**
* @category parsers
* @since 0.4.0
*/
export declare class Parser {
readonly run: (r: Route) => O.Option<[A, Route]>;
/**
* @since 0.4.0
*/
readonly _A: A;
constructor(run: (r: Route) => O.Option<[A, Route]>);
/**
* @since 0.4.0
*/
static of(a: A): Parser;
/**
* @since 0.4.0
*/
map(f: (a: A) => B): Parser;
/**
* @since 0.4.0
*/
ap(fab: Parser<(a: A) => B>): Parser;
/**
* @since 0.4.0
*/
chain(f: (a: A) => Parser): Parser;
/**
* @since 0.4.0
*/
alt(that: Parser): Parser;
/**
* @since 0.4.0
*/
then(that: Parser>): Parser;
}
/**
* @category parsers
* @since 0.4.0
*/
export declare const zero: () => Parser;
/**
* @category parsers
* @since 0.4.0
*/
export declare const parse: (parser: Parser, r: Route, a: A) => A;
/**
* @category parsers
* @since 0.5.1
*/
export declare const getParserMonoid: () => Monoid>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const parser: Monad1 & Alternative1;
/**
* @category parsers
* @since 0.5.1
*/
export declare const alt: (that: Lazy>) => (fa: Parser) => Parser;
/**
* @category parsers
* @since 0.5.1
*/
export declare const ap: (fa: Parser) => (fab: Parser<(a: A) => B>) => Parser;
/**
* @category parsers
* @since 0.5.1
*/
export declare const apFirst: (fb: Parser) => (fa: Parser) => Parser;
/**
* @category parsers
* @since 0.5.1
*/
export declare const apSecond: (fb: Parser) => (fa: Parser) => Parser;
/**
* @category parsers
* @since 0.5.1
*/
export declare const chain: (f: (a: A) => Parser) => (ma: Parser) => Parser;
/**
* @category parsers
* @since 0.5.1
*/
export declare const chainFirst: (f: (a: A) => Parser) => (ma: Parser) => Parser;
/**
* @category parsers
* @since 0.5.1
*/
export declare const flatten: (mma: Parser>) => Parser;
/**
* @category parsers
* @since 0.5.1
*/
export declare const map: (f: (a: A) => B) => (fa: Parser) => Parser;
/**
* @category parsers
* @since 0.6.0
*/
export declare const then: (fb: Parser) => (fa: Parser & Parser>) => Parser;
export {};