/// /// /// /// /// 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 {};