import { Schema } from "effect";
import * as AssetName from "./AssetName.js";
import * as PolicyId from "./PolicyId.js";
/**
 * Unit represents the concatenation of PolicyId and AssetName as a single hex string.
 * Format: policyId (56 chars) + assetName (0-64 chars)
 * Special case: "lovelace" represents ADA
 *
 * @since 2.0.0
 * @category model
 */
export type Unit = string;
/**
 * Result of parsing a Unit string.
 *
 * @since 2.0.0
 * @category model
 */
export interface UnitDetails {
    policyId: PolicyId.PolicyId;
    assetName: AssetName.AssetName | null;
    name: AssetName.AssetName | null;
    label: number | null;
}
/**
 * Parse a Unit string into its components.
 * Extracts policy ID, asset name, and CIP-67 label if present.
 *
 * @since 2.0.0
 * @category conversions
 */
export declare const fromUnit: (unit: Unit) => UnitDetails;
/**
 * Construct a Unit string from components.
 * Combines policy ID, optional CIP-67 label, and asset name.
 *
 * @since 2.0.0
 * @category conversions
 * @throws {Error} If asset name exceeds 32 bytes
 * @throws {Error} If policy ID is invalid length
 */
export declare const toUnit: (policyId: PolicyId.PolicyId, name?: AssetName.AssetName | string | null, label?: number | null) => Unit;
/**
 * Check if a value is the special "lovelace" unit.
 *
 * @since 2.0.0
 * @category predicates
 */
export declare const isLovelace: (unit: Unit) => boolean;
/**
 * Schema for validating Unit strings.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const UnitSchema: Schema.refine<string, typeof Schema.String>;
//# sourceMappingURL=Unit.d.ts.map