import { IrysConfig, Network } from '@irys/upload-core'; import { NodeIrysConfig, NodeToken } from './types'; import { BaseNodeIrys } from './base'; import { Irys } from '@irys/upload-core'; export type Adapter = PreAdapter | PostAdapter | BiphaseAdapter; export interface BaseAdapter { phase: 'pre' | 'post' | 'both'; load?: (builder: this) => void; } export interface PreAdapter extends BaseAdapter { phase: 'pre'; adaptTokenPre: (builder: UploadBuilder, tokenConfig: ConstructableNodeToken) => Resolvable; } export interface PostAdapter extends BaseAdapter { phase: 'post'; adaptTokenPost: (builder: UploadBuilder, tokenConfig: NodeToken) => Resolvable; } export interface BiphaseAdapter extends BaseAdapter { phase: 'both'; adaptTokenPre: (builder: UploadBuilder, tokenConfig: ConstructableNodeToken) => Resolvable; adaptTokenPost: (builder: UploadBuilder, tokenConfig: NodeToken) => Resolvable; } export type Resolvable = T | Promise; export type Constructable = { new (...args: A): T; }; export type ConstructableNodeToken = Constructable<[ TokenConfigTrimmed ], NodeToken>; export type TokenConfigTrimmed = { irys: Irys; wallet?: Wallet; providerUrl?: string; opts?: Opts; }; export declare class UploadBuilder { preAdapters: (PreAdapter | BiphaseAdapter)[]; postAdapters: (PostAdapter | BiphaseAdapter)[]; token: ConstructableNodeToken; protected wallet: any; config: NodeIrysConfig & { irysConfig: IrysConfig; }; constructed?: NodeToken; constructor(tokenClass: ConstructableNodeToken); withWallet(wallet: any): this; mainnet(): this; devnet(): this; withRpc(rpcUrl: string): this; bundlerUrl(url: URL | string): this; network(network: Network): this; withAdapter(adapter: Adapter): this; build(): Promise; withTokenOptions(opts: any): this; withIrysConfig(config: IrysConfig): this; /** * Set the HTTP request timeout - useful if you have a slower connection * @param timeout - timeout in milliseconds * @returns this (builder) */ timeout(timeout: number): this; then(onFulfilled?: ((value: BaseNodeIrys) => any | PromiseLike) | undefined | null, onRejected?: (value: Error) => any | PromiseLike | undefined | null): Promise; catch(onReject?: ((value: BaseNodeIrys) => any | PromiseLike) | undefined | null): Promise; finally(onFinally?: (() => void) | null | undefined): Promise; } export declare const Builder: (tokenClass: ConstructableNodeToken) => UploadBuilder;