import * as t from 'io-ts';
import type { ActionType } from '../utils/actions';
import { Address } from '../utils/types';
/**
 * One-shot send payload.message to meta.address user in transport
 */
export declare const messageSend: {
    readonly request: ((payload: {
        message: string | ((import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
            signature: import("../utils/types").HexString<65>;
        }>);
    } & {
        msgtype?: string | undefined;
    } & {
        userId?: string | undefined;
    }, meta: {
        address: Address;
        msgId: string;
    }) => {
        readonly type: "message/send/request";
        readonly payload: {
            message: string | ((import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
                signature: import("../utils/types").HexString<65>;
            }>);
        } & {
            msgtype?: string | undefined;
        } & {
            userId?: string | undefined;
        };
        readonly meta: {
            address: Address;
            msgId: string;
        };
    }) & {
        type: "message/send/request";
        codec: t.Mixed;
        is: (a: unknown) => a is {
            readonly type: "message/send/request";
            readonly payload: {
                message: string | ((import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
                    signature: import("../utils/types").HexString<65>;
                }>);
            } & {
                msgtype?: string | undefined;
            } & {
                userId?: string | undefined;
            };
            readonly meta: {
                address: Address;
                msgId: string;
            };
        };
        error: undefined;
    };
    readonly success: ((payload: {
        via: string;
        tookMs: number;
        retries: number;
    } | undefined, meta: {
        address: Address;
        msgId: string;
    }) => {
        readonly type: "message/send/success";
        readonly payload: {
            via: string;
            tookMs: number;
            retries: number;
        } | undefined;
        readonly meta: {
            address: Address;
            msgId: string;
        };
    }) & {
        type: "message/send/success";
        codec: t.Mixed;
        is: (a: unknown) => a is {
            readonly type: "message/send/success";
            readonly payload: {
                via: string;
                tookMs: number;
                retries: number;
            } | undefined;
            readonly meta: {
                address: Address;
                msgId: string;
            };
        };
        error: undefined;
    };
    readonly failure: ((payload: unknown, meta: {
        address: Address;
        msgId: string;
    }) => {
        readonly type: "message/send/failure";
        readonly payload: unknown;
        readonly meta: {
            address: Address;
            msgId: string;
        };
        readonly error: true;
    }) & {
        type: "message/send/failure";
        codec: t.Mixed;
        is: (a: unknown) => a is {
            readonly type: "message/send/failure";
            readonly payload: unknown;
            readonly meta: {
                address: Address;
                msgId: string;
            };
            readonly error: true;
        };
        error: true;
    };
};
export declare namespace messageSend {
    interface request extends ActionType<typeof messageSend.request> {
    }
    interface success extends ActionType<typeof messageSend.success> {
    }
    interface failure extends ActionType<typeof messageSend.failure> {
    }
}
/** One-shot send payload.message to a service room in transport */
export declare const messageServiceSend: {
    readonly request: ((payload: {
        message: (import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
            signature: import("../utils/types").HexString<65>;
        }>;
    }, meta: {
        service: import("../services/types").Service;
        msgId: string;
    }) => {
        readonly type: "message/service/send/request";
        readonly payload: {
            message: (import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
                signature: import("../utils/types").HexString<65>;
            }>;
        };
        readonly meta: {
            service: import("../services/types").Service;
            msgId: string;
        };
    }) & {
        type: "message/service/send/request";
        codec: t.Mixed;
        is: (a: unknown) => a is {
            readonly type: "message/service/send/request";
            readonly payload: {
                message: (import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
                    signature: import("../utils/types").HexString<65>;
                }>;
            };
            readonly meta: {
                service: import("../services/types").Service;
                msgId: string;
            };
        };
        error: undefined;
    };
    readonly success: ((payload: {
        via: unknown;
        tookMs: number;
        retries: number;
    } | undefined, meta: {
        service: import("../services/types").Service;
        msgId: string;
    }) => {
        readonly type: "message/service/send/success";
        readonly payload: {
            via: unknown;
            tookMs: number;
            retries: number;
        } | undefined;
        readonly meta: {
            service: import("../services/types").Service;
            msgId: string;
        };
    }) & {
        type: "message/service/send/success";
        codec: t.Mixed;
        is: (a: unknown) => a is {
            readonly type: "message/service/send/success";
            readonly payload: {
                via: unknown;
                tookMs: number;
                retries: number;
            } | undefined;
            readonly meta: {
                service: import("../services/types").Service;
                msgId: string;
            };
        };
        error: undefined;
    };
    readonly failure: ((payload: unknown, meta: {
        service: import("../services/types").Service;
        msgId: string;
    }) => {
        readonly type: "message/service/send/failure";
        readonly payload: unknown;
        readonly meta: {
            service: import("../services/types").Service;
            msgId: string;
        };
        readonly error: true;
    }) & {
        type: "message/service/send/failure";
        codec: t.Mixed;
        is: (a: unknown) => a is {
            readonly type: "message/service/send/failure";
            readonly payload: unknown;
            readonly meta: {
                service: import("../services/types").Service;
                msgId: string;
            };
            readonly error: true;
        };
        error: true;
    };
};
export declare namespace messageServiceSend {
    interface request extends ActionType<typeof messageServiceSend.request> {
    }
    interface success extends ActionType<typeof messageServiceSend.success> {
    }
    interface failure extends ActionType<typeof messageServiceSend.failure> {
    }
}
/**
 * payload.message was received on payload.ts (timestamp) from meta.address
 * payload.userId is optional and specific to matrix transport, as sender info
 */
export declare const messageReceived: ((payload: {
    text: string;
    ts: number;
} & {
    message?: import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest | ((import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
        signature: import("../utils/types").HexString<65>;
    }>) | undefined;
    userId?: string | undefined;
    msgtype?: string | undefined;
}, meta: {
    address: Address;
}) => {
    readonly type: "message/received";
    readonly payload: {
        text: string;
        ts: number;
    } & {
        message?: import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest | ((import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
            signature: import("../utils/types").HexString<65>;
        }>) | undefined;
        userId?: string | undefined;
        msgtype?: string | undefined;
    };
    readonly meta: {
        address: Address;
    };
}) & {
    type: "message/received";
    codec: t.Mixed;
    is: (a: unknown) => a is {
        readonly type: "message/received";
        readonly payload: {
            text: string;
            ts: number;
        } & {
            message?: import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest | ((import("./types").Delivered | import("./types").Processed | import("./types").SecretRequest | import("./types").SecretReveal | import("./types").LockedTransfer | import("./types").Unlock | import("./types").LockExpired | import("./types").WithdrawRequest | import("./types").WithdrawConfirmation | import("./types").WithdrawExpired | import("./types").PFSCapacityUpdate | import("./types").PFSFeeUpdate | import("./types").MonitorRequest) & Readonly<{
                signature: import("../utils/types").HexString<65>;
            }>) | undefined;
            userId?: string | undefined;
            msgtype?: string | undefined;
        };
        readonly meta: {
            address: Address;
        };
    };
    error: undefined;
};
export interface messageReceived extends ActionType<typeof messageReceived> {
}
