import { Result } from 'neverthrow';
/**
 * Issue Definition Term Model Implementation
 *
 * This demonstrates the Term Model pattern for Domain-Driven Design:
 * - Domain vocabulary as executable code
 * - Smart constructors with validation
 * - Immutable value objects
 * - Business rule enforcement
 * - Type-safe domain modeling
 */
/**
 * Term types in this domain:
 * - value: Value objects and identifiers
 */
/**
 * 語彙「IssueText」
 * domain type: value
 */
type IssueText = string & {
    readonly _brand: 'IssueText';
};
declare const IssueText: {
    readonly create: (value: string) => Result<IssueText, ValidationError[]>;
    readonly toString: (issueText: IssueText) => string;
};
/**
 * 語彙「ContextText」
 * domain type: value
 */
type ContextText = string & {
    readonly _brand: 'ContextText';
};
declare const ContextText: {
    readonly create: (value: string) => Result<ContextText, ValidationError[]>;
    readonly toString: (contextText: ContextText) => string;
};
/**
 * 語彙「ConstraintText」
 * domain type: value
 */
type ConstraintText = string & {
    readonly _brand: 'ConstraintText';
};
declare const ConstraintText: {
    readonly create: (value: string) => Result<ConstraintText, ValidationError[]>;
    readonly toString: (constraintText: ConstraintText) => string;
};
type ValidationError = {
    readonly type: 'required' | 'too_short' | 'too_long' | 'invalid_type';
    readonly field: string;
    readonly message: string;
};
declare const ValidationError: {
    readonly create: (type: ValidationError["type"], field: string, message: string) => ValidationError;
};
/**
 * Value Object Constructors
 */
export declare const Values: {
    readonly IssueText: {
        readonly create: (value: string) => Result<IssueText, ValidationError[]>;
        readonly toString: (issueText: IssueText) => string;
    };
    readonly ContextText: {
        readonly create: (value: string) => Result<ContextText, ValidationError[]>;
        readonly toString: (contextText: ContextText) => string;
    };
    readonly ConstraintText: {
        readonly create: (value: string) => Result<ConstraintText, ValidationError[]>;
        readonly toString: (constraintText: ConstraintText) => string;
    };
};
export { IssueText, ContextText, ConstraintText };
/**
 * Type Exports for External Use
 */
export type { ValidationError };
//# sourceMappingURL=issue-definition.d.ts.map