export interface SmsMessage {
    id?: number;
    sender: string;
    message: string;
    timestamp: number;
    date: string;
    type?: 'received' | 'sent';
}
export interface SmsError {
    error: string;
    message: string;
}
export interface SmsSendOptions {
    /**
     * SIM slot to use for sending (0 for first SIM, 1 for second)
     * Default: 0
     */
    simSlot?: number;
    /**
     * Whether to request delivery report
     * Default: false
     * Note: Set to false for immediate response. Delivery reports may not always arrive.
     */
    requestStatusReport?: boolean;
    /**
     * Whether to check signal strength before sending
     * Default: false
     */
    checkSignal?: boolean;
    /**
     * Whether to wait for delivery confirmation before resolving promise
     * Only used when requestStatusReport is true
     * Default: false (resolves immediately after sent status)
     *
     * When false: Promise resolves as soon as SMS is sent to network
     * When true: Promise waits for delivery confirmation (with timeout)
     */
    waitForDelivery?: boolean;
    /**
     * Timeout in milliseconds to wait for delivery confirmation
     * Only used when waitForDelivery is true
     * Default: 30000 (30 seconds)
     */
    deliveryTimeout?: number;
    /**
     * Minimum signal strength required (1-4)
     * Only used if checkSignal is true
     * Default: 2 (moderate)
     */
    minSignalStrength?: number;
    /**
     * Custom metadata to attach to the message
     */
    metadata?: Record<string, any>;
}
export interface SmsSendResult {
    /**
     * Unique identifier for the sent message
     */
    messageId: string;
    /**
     * Sending status
     * - 'sent': Successfully sent to network
     * - 'sent_no_confirmation': Sent without waiting for network confirmation
     * - 'generic_failure': General sending failure
     * - 'no_service': No network service available
     * - 'null_pdu': Invalid message format
     * - 'radio_off': Radio/airplane mode is on
     * - 'unknown_error': Unknown error occurred
     * - 'pending': Still being processed
     */
    sent: 'sent' | 'sent_no_confirmation' | 'generic_failure' | 'no_service' | 'null_pdu' | 'radio_off' | 'unknown_error' | 'pending';
    /**
     * Delivery status (if requested)
     * - 'delivered': Message delivered to recipient
     * - 'pending': Awaiting delivery confirmation
     * - 'not_requested': Delivery tracking not requested
     * - 'failed': Delivery failed
     * - 'timeout': Delivery confirmation timed out
     */
    delivered?: 'delivered' | 'pending' | 'not_requested' | 'failed' | 'timeout';
    /**
     * Additional result details
     */
    resultCode?: number;
    /**
     * Error message if failed
     */
    error?: string;
    /**
     * Status message for display
     */
    status?: string;
}
export interface SmsMultipleResult {
    /**
     * Phone number
     */
    number: string;
    /**
     * Message ID if initiated successfully
     */
    messageId?: string;
    /**
     * Status of the send attempt
     */
    status: 'initiated' | 'failed' | 'sent';
    /**
     * Error message if failed
     */
    error?: string;
}
export interface SimCardInfo {
    /**
     * SIM slot index (0-based)
     */
    slot: number;
    /**
     * Physical SIM slot index
     */
    simSlotIndex?: number;
    /**
     * Display name of the SIM (e.g., "SIM 1", "Work")
     */
    displayName: string;
    /**
     * Carrier name
     */
    carrierName?: string;
    /**
     * Subscription ID (Android internal)
     */
    subscriptionId?: number;
    /**
     * Country ISO code
     */
    countryIso?: string;
    /**
     * Whether the SIM is currently active
     */
    isActive: boolean;
    /**
     * Phone number associated with SIM (if available)
     */
    phoneNumber?: string;
}
export interface SignalStrengthInfo {
    /**
     * SIM slot index
     */
    simSlot: number;
    /**
     * Signal strength value (0-4, -1 for unknown)
     */
    signalStrength: number;
    /**
     * Human-readable signal level
     */
    signalLevel: 'none' | 'poor' | 'moderate' | 'good' | 'excellent' | 'unknown';
    /**
     * Whether there is any signal
     */
    hasSignal: boolean;
    /**
     * Additional signal metrics (if available)
     */
    metrics?: {
        dbm?: number;
        asu?: number;
        rssi?: number;
    };
}
export interface SmsProgressEvent {
    /**
     * Message ID
     */
    messageId: string;
    /**
     * Current status
     */
    status: 'sending' | 'sending_multipart' | 'sent' | 'failed' | 'delivered';
    /**
     * Phone number being sent to
     */
    phoneNumber?: string;
    /**
     * Number of parts (for multipart messages)
     */
    parts?: number;
    /**
     * Current part being sent
     */
    currentPart?: number;
    /**
     * Progress percentage (0-100)
     */
    progress?: number;
}
export interface SmsSentEvent {
    /**
     * Message ID
     */
    messageId: string;
    /**
     * Sending status
     */
    status: 'sent' | 'generic_failure' | 'no_service' | 'null_pdu' | 'radio_off' | 'unknown_error';
    /**
     * Android result code
     */
    resultCode: number;
    /**
     * Part index (for multipart messages)
     */
    part?: number;
    /**
     * Total parts (for multipart messages)
     */
    totalParts?: number;
}
export interface SmsDeliveredEvent {
    /**
     * Message ID
     */
    messageId: string;
    /**
     * Delivery status
     */
    status: 'delivered' | 'failed';
    /**
     * Part index (for multipart messages)
     */
    part?: number;
    /**
     * Total parts (for multipart messages)
     */
    totalParts?: number;
    /**
     * Delivery timestamp
     */
    timestamp?: number;
}
export type ExpoSmsManagerModuleEvents = {
    /**
     * Fired when an SMS is received
     */
    onSmsReceived: (message: SmsMessage) => void;
    /**
     * Fired when an error occurs
     */
    onError: (error: SmsError) => void;
    /**
     * Fired when SMS sending progress updates
     */
    onSmsProgress: (event: SmsProgressEvent) => void;
    /**
     * Fired when SMS is sent (confirmed by network)
     */
    onSmsSent: (event: SmsSentEvent) => void;
    /**
     * Fired when SMS is delivered to recipient
     */
    onSmsDelivered: (event: SmsDeliveredEvent) => void;
};
export interface SmsPermissions {
    /**
     * Permission to read SMS messages
     */
    READ_SMS: boolean;
    /**
     * Permission to receive SMS messages
     */
    RECEIVE_SMS: boolean;
    /**
     * Permission to send SMS messages
     */
    SEND_SMS: boolean;
    /**
     * Permission to read phone state (for dual SIM)
     */
    READ_PHONE_STATE: boolean;
}
export declare enum SmsErrorCode {
    PERMISSION_ERROR = "PERMISSION_ERROR",
    SEND_ERROR = "SEND_ERROR",
    SIGNAL_ERROR = "SIGNAL_ERROR",
    NO_SIM_ERROR = "NO_SIM_ERROR",
    INVALID_NUMBER = "INVALID_NUMBER",
    MESSAGE_TOO_LONG = "MESSAGE_TOO_LONG",
    NETWORK_ERROR = "NETWORK_ERROR",
    UNKNOWN_ERROR = "UNKNOWN_ERROR"
}
export declare const SMS_MAX_LENGTH = 160;
export declare const SMS_MAX_LENGTH_UNICODE = 70;
export declare const SMS_MULTIPART_MAX_LENGTH = 153;
export declare const SMS_MULTIPART_MAX_LENGTH_UNICODE = 67;
export declare const DEFAULT_SMS_OPTIONS: SmsSendOptions;
//# sourceMappingURL=ExpoSmsManager.types.d.ts.map