/** * humandesign2txt * Converts Human Design chart data to human-readable text for LLM consumption. */ export interface PlanetPosition { name: string; longitude: number; speed: number; } export interface CalculationResult { planets: PlanetPosition[]; ascendant: number; midheaven: number; houseCusps: number[]; date: string; time: string; location: { latitude: number; longitude: number; }; timezone?: string; } export interface HumanDesignApiResponse { personality: CalculationResult; design: CalculationResult; metadata: { designUtcDateTime: string; solarArcDegrees: number; personalitySunLongitude: number; designSunLongitude: number; }; } export interface Activation { planet: string; gate: number; line: number; } export interface Channel { gates: [number, number]; name: string; centers: [string, string]; } export interface HumanDesignChart { name: string; location: string; date: string; time: string; type: string; strategy: string; authority: string; definition: string; definitionIslands: string[][]; profile: string; profileName: string; incarnationCross: string; definedCenters: string[]; undefinedCenters: string[]; openCenters: string[]; activeChannels: Channel[]; hangingGates: Array<{ gate: number; center: string; }>; allGates: Map; personalityActivations: Activation[]; designActivations: Activation[]; } /** * The 64 gates in I Ching wheel order (starting from 0° Aries after 58° adjustment) */ export declare const GATES: number[]; /** * Gate names (I Ching / Human Design names) */ export declare const GATE_NAMES: Record; /** * Which center each gate belongs to */ export declare const GATE_CENTERS: Record; /** * All 36 channels with their gate pairs, names, and connected centers */ export declare const CHANNELS: Channel[]; /** * Profile names by line combination */ export declare const PROFILE_NAMES: Record; /** * Incarnation Cross names by Sun gate (simplified - Right Angle crosses) * Format: { gateNumber: "Cross Name" } */ export declare const INCARNATION_CROSSES: Record; /** * Strategy by Type */ export declare const STRATEGY_BY_TYPE: Record; /** * All 9 centers */ export declare const ALL_CENTERS: string[]; /** * Convert a planetary longitude to gate and line */ export declare function longitudeToGateLine(longitude: number): { gate: number; line: number; }; /** * Get the opposite gate (180° across the wheel) */ export declare function oppositeGate(gate: number): number; /** * Calculate all activations from planetary positions */ export declare function calculateActivations(planets: PlanetPosition[]): Activation[]; /** * Get all unique gates from activations, tracking their sources */ export declare function getAllGates(personalityActivations: Activation[], designActivations: Activation[]): Map; /** * Determine which channels are active (both gates present) */ export declare function getActiveChannels(allGates: Map): Channel[]; /** * Determine center status: Defined, Undefined, or Open */ export declare function getCenterStatus(activeChannels: Channel[], allGates: Map): { defined: string[]; undefined: string[]; open: string[]; }; /** * Calculate Human Design Type */ export declare function calculateType(definedCenters: string[], activeChannels: Channel[]): string; /** * Calculate Inner Authority */ export declare function calculateAuthority(definedCenters: string[], activeChannels: Channel[]): string; /** * Calculate Definition type (how centers are connected) */ export declare function calculateDefinition(activeChannels: Channel[], definedCenters: string[]): string; /** * Get definition islands - groups of connected defined centers */ export declare function getDefinitionIslands(activeChannels: Channel[], definedCenters: string[]): string[][]; /** * Get hanging gates - gates that are not part of a complete channel */ export declare function getHangingGates(allGates: Map, activeChannels: Channel[]): Array<{ gate: number; center: string; }>; /** * Calculate Profile from personality and design sun lines */ export declare function calculateProfile(personalitySunLine: number, designSunLine: number): string; /** * Get Incarnation Cross */ export declare function getIncarnationCross(personalitySunGate: number, personalityEarthGate: number, designSunGate: number, designEarthGate: number, personalitySunLine: number, designSunLine: number): string; export interface HumanDesign2TxtOptions { name?: string; location?: string; } /** * Main entry point: Convert Human Design API response to formatted text */ export declare function humandesign2txt(apiResponse: HumanDesignApiResponse, options?: HumanDesign2TxtOptions): string; export interface ChannelConnection { channel: Channel; type: 'electromagnetic' | 'companionship' | 'dominance' | 'compromise'; person1Gates: number[]; person2Gates: number[]; description: string; } export interface GateConnection { gate: number; gateName: string; center: string; type: 'shared' | 'unique_person1' | 'unique_person2'; } export interface HumanDesignPartnership { person1: HumanDesignChart; person2: HumanDesignChart; electromagneticChannels: ChannelConnection[]; companionshipChannels: ChannelConnection[]; dominanceChannels: ChannelConnection[]; compromiseChannels: ChannelConnection[]; compositeDefinedCenters: string[]; compositeUndefinedCenters: string[]; compositeOpenCenters: string[]; compositeChannels: Channel[]; compositeType: string; compositeStrategy: string; compositeDefinition: string; compositeDefinitionIslands: string[][]; channelsPerson1Only: Channel[]; channelsPerson2Only: Channel[]; channelsOnlyTogether: Channel[]; sharedGates: GateConnection[]; uniqueGatesPerson1: GateConnection[]; uniqueGatesPerson2: GateConnection[]; } /** * Analyze the relationship between two Human Design charts */ export declare function analyzePartnership(chart1: HumanDesignChart, chart2: HumanDesignChart): HumanDesignPartnership; /** * Build a HumanDesignChart object from API response */ export declare function buildChart(apiResponse: HumanDesignApiResponse, options?: HumanDesign2TxtOptions): HumanDesignChart; export interface HumanDesignPartnership2TxtOptions { person1Name?: string; person1Location?: string; person2Name?: string; person2Location?: string; } /** * Main entry point for partnership analysis: Convert two Human Design API responses to formatted text */ export declare function humandesignPartnership2txt(apiResponse1: HumanDesignApiResponse, apiResponse2: HumanDesignApiResponse, options?: HumanDesignPartnership2TxtOptions): string; export default humandesign2txt;