///
///
///
///
///
import Koa, { Middleware } from 'koa';
import { Router } from './services/router';
import { IlpPacketMiddlewareOptions, RafikiPrepare } from './middleware/ilp-packet';
import { PeerMiddlewareOptions } from './middleware/peer';
import { PeersService, Peer } from './services/peers';
import { AuthState } from './middleware/auth';
import { TokenAuthConfig } from './middleware/token-auth';
import { AccountSnapshot, AccountsService } from './services/accounts';
import { LoggingService } from './services/logger';
import { IncomingMessage, ServerResponse } from 'http';
import { IlpReply, IlpReject, IlpFulfill } from 'ilp-packet';
import { AccountMiddlewareOptions } from './middleware/account';
export interface RafikiServices {
router: Router;
peers: PeersService;
accounts: AccountsService;
logger: LoggingService;
}
export interface RafikiIlpConfig extends IlpPacketMiddlewareOptions, PeerMiddlewareOptions, AccountMiddlewareOptions {
path?: string;
}
export declare type RafikiState = T & AuthState;
export declare type RafikiRequestMixin = {
prepare: RafikiPrepare;
rawPrepare: Buffer;
};
export declare type RafikiResponseMixin = {
reject?: IlpReject;
rawReject?: Buffer;
fulfill?: IlpFulfill;
rawFulfill?: Buffer;
reply?: IlpReply;
rawReply?: Buffer;
};
export declare type RafikiRequest = Koa.Request & RafikiRequestMixin;
export declare type RafikiResponse = Koa.Response & RafikiResponseMixin;
export declare type RafikiContextMixin = {
services: RafikiServices;
peers: {
readonly incoming: Promise;
readonly outgoing: Promise;
};
accounts: {
readonly incoming: Promise;
readonly outgoing: Promise;
};
request: RafikiRequest;
response: RafikiResponse;
req: IncomingMessage & RafikiRequestMixin;
res: ServerResponse & RafikiResponseMixin;
};
export declare type RafikiContext = Koa.ParameterizedContext;
export declare type RafikiMiddleware = Middleware;
export declare class Rafiki extends Koa {
private _router?;
private _peers?;
private _accounts?;
constructor(config?: Partial);
router: Router | undefined;
peers: PeersService | undefined;
accounts: AccountsService | undefined;
logger: LoggingService;
useIlp(config?: RafikiIlpConfig): void;
}
interface RafikiCreateAppServices extends RafikiServices {
auth: RafikiMiddleware | Partial;
}
export declare function createAuthMiddleware(auth?: RafikiMiddleware | Partial): RafikiMiddleware;
export declare function createApp({ auth, peers, accounts, router, logger }: Partial, config?: RafikiIlpConfig): Rafiki;
export declare class RafikiRouter {
private _router;
constructor();
ilpRoute(ilpAddressPattern: string, handler: RafikiMiddleware): void;
routes(): RafikiMiddleware;
}
export {};