import { $type, TyK, TyVar } from '@fp4ts/core';
import { EqK } from '../eq-k';
import { Distributive } from '../distributive';
import { Applicative } from '../applicative';
import { Apply } from '../apply';
import { FlatMap } from '../flat-map';
import { CoflatMap } from '../coflat-map';
import { Functor } from '../functor';
import { Monad } from '../monad';
import { Comonad } from '../comonad';
import { Foldable } from '../foldable';
import { Traversable } from '../traversable';
import { Unzip } from '../unzip';
export type Identity = A;
export declare const Identity: IdentityObj;
interface IdentityObj {
(a: A): Identity;
readonly EqK: EqK;
readonly Functor: Functor;
readonly Distributive: Distributive;
readonly Apply: Apply;
readonly Applicative: Applicative;
readonly FlatMap: FlatMap;
readonly CoflatMap: CoflatMap;
readonly Monad: Monad;
readonly Comonad: Comonad;
readonly Foldable: Foldable;
readonly Traversable: Traversable;
readonly Unzip: Unzip;
}
export declare function isIdentityTC(TC: Traversable): TC is Traversable;
export declare function isIdentityTC(TC: Foldable): TC is Foldable;
export declare function isIdentityTC(TC: Monad): TC is Monad;
export declare function isIdentityTC(TC: Applicative): TC is Applicative;
export declare function isIdentityTC(TC: FlatMap): TC is FlatMap;
export declare function isIdentityTC(TC: Apply): TC is Apply;
export declare function isIdentityTC(TC: Functor): TC is Functor;
/**
* @category Type Constructor
* @category Data
*/
export interface IdentityF extends TyK<[unknown]> {
[$type]: TyVar;
}
export {};
//# sourceMappingURL=identity.d.ts.map