/**
 * A newtype around strings signifying non-emptiness therein.
 *
 * Many further utilities can be defined in terms of the `String` module via
 * contramap, for example any predicates.
 *
 * @since 0.15.0
 */
import type { Endomorphism } from "fp-ts/Endomorphism";
import * as O from "fp-ts/Option";
import { type Predicate } from "fp-ts/Predicate";
import type { ReadonlyNonEmptyArray } from "fp-ts/ReadonlyNonEmptyArray";
import type { Show as TShow } from "fp-ts/Show";
import { type Newtype } from "newtype-ts";
type Show<A> = TShow<A>;
type NonEmptyStringSymbol = {
    readonly NonEmptyString: unique symbol;
};
/**
 * Newtype representing a non-empty string. Non-emptiness is only guaranteed so
 * long as interaction with the newtype is confined to exports from this module,
 * as unlike `NonEmptyArray` it's only protected by a smart constructor.
 *
 * @example
 * import { NonEmptyString, unsafeFromString } from 'fp-ts-std/NonEmptyString'
 * import * as O from 'fp-ts/Option'
 *
 * const signature: NonEmptyString = unsafeFromString('- @samhh.com')
 *
 * @category 0 Types
 * @since 0.15.0
 */
export type NonEmptyString = Newtype<NonEmptyStringSymbol, string>;
/**
 * Smart constructor from strings.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const fromString: (x: string) => O.Option<NonEmptyString>;
/**
 * Unsafely lift a string to `NonEmptyString`, throwing upon failure. Can be
 * useful for static values. Try to use `fromString` instead.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const unsafeFromString: (x: string) => NonEmptyString;
/**
 * Safely derive a `NonEmptyString` from any number.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const fromNumber: (x: number) => NonEmptyString;
/**
 * Unwrap a `NonEmptyString` newtype back to its underlying string
 * representation.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const unNonEmptyString: (x: NonEmptyString) => string;
/**
 * An alias of `unNonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const toString: (x: NonEmptyString) => string;
/**
 * `Eq` instance for `NonEmptyString` for testing equivalence.
 *
 * @category 1 Typeclass Instances
 * @since 0.15.0
 */
export declare const Eq: import("fp-ts/lib/Eq").Eq<NonEmptyString>;
/**
 * `Ord` instance for `NonEmptyString` for comparison.
 *
 * @category 1 Typeclass Instances
 * @since 0.15.0
 */
export declare const Ord: import("fp-ts/lib/Ord").Ord<NonEmptyString>;
/**
 * `Semigroup` instance for `NonEmptyString`, enabling concatenation.
 *
 * @category 1 Typeclass Instances
 * @since 0.15.0
 */
export declare const Semigroup: import("fp-ts/lib/Semigroup").Semigroup<NonEmptyString>;
/**
 * `Show` instance for `NonEmptyString`.
 *
 * @category 1 Typeclass Instances
 * @since 0.15.0
 */
export declare const Show: Show<NonEmptyString>;
/**
 * Get the first character in a `NonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const head: Endomorphism<NonEmptyString>;
/**
 * Get the last character in a `NonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const last: Endomorphism<NonEmptyString>;
/**
 * Convert a `NonEmptyString` to uppercase.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const toUpperCase: Endomorphism<NonEmptyString>;
/**
 * Convert a `NonEmptyString` to lowercase.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const toLowerCase: Endomorphism<NonEmptyString>;
/**
 * Prepend a string to a `NonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const prepend: (x: string) => Endomorphism<NonEmptyString>;
/**
 * Append a string to a `NonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const append: (x: string) => Endomorphism<NonEmptyString>;
/**
 * Surround a `NonEmptyString`. Equivalent to calling `prepend` and `append`
 * with the same outer value.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const surround: (x: string) => Endomorphism<NonEmptyString>;
/**
 * Reverse a `NonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.15.0
 */
export declare const reverse: Endomorphism<NonEmptyString>;
/**
 * Calculate the number of characters in a `NonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.17.0
 */
export declare const size: (x: NonEmptyString) => number;
/**
 * Split a `NonEmptyString` into an array of strings using `separator`.
 *
 * @category 3 Functions
 * @since 0.17.0
 */
export declare const split: (separator: string | RegExp) => (x: NonEmptyString) => ReadonlyNonEmptyArray<string>;
/**
 * Predicate upon the presence of a `search` string anywhere in a
 * `NonEmptyString`.
 *
 * @category 3 Functions
 * @since 0.17.0
 */
export declare const includes: (search: string) => Predicate<NonEmptyString>;
export {};
//# sourceMappingURL=NonEmptyString.d.ts.map