UNPKG

@cryptovarna/tedex-api

Version:

TEDEX API

125 lines (124 loc) 3.88 kB
import { INodeInfo, IWalletProvider, WalletConsumer } from "@cryptovarna/tron-web-api"; import BigNumber from "bignumber.js"; export interface TaskCreated { taskId?: string; creator?: string; targetNetwork?: string; targets?: string; values?: BigNumber; calldatas?: string; userSeed: BigNumber; startTime?: BigNumber; endTime?: BigNumber; signers?: string; signersN?: BigNumber; } export interface TaskSigned { taskId: string; signer: string; signature: string; } export interface TaskExecuted { taskId: string; } export interface TaskCanceled { taskId: string; signature: string; } export interface TaskApproved { taskId: string; signatures: string; signaturesN: string; } export interface TokensBridged { owner: string; targetNetwork: string; recipient: string; amount: BigNumber; userSeed: BigNumber; taskId: string; } export interface TaskFinalized { owner: string; taskId: string; } export declare enum TokenBridgeStatus { Invalid = "Invalid", Created = "Created", Approved = "Approved", Declined = "Declined" } export interface ITokenBridgeTask { taskData: ITaskData; sourceNode: INodeInfo; destinationNode: INodeInfo; networkHash: string; status: TokenBridgeStatus; confirmation: number; requiredConfirmations: number; fetch(): Promise<void>; execute(targetProvider: IWalletProvider): Promise<void>; withdraw(): Promise<void>; } export declare abstract class TokenBridgeTask extends WalletConsumer implements ITokenBridgeTask { protected _eventSource: string; protected _bridgeDestination: string; protected _tokenBridge: string; protected _signature: string; taskData: ITaskData; sourceNode: INodeInfo; destinationNode: INodeInfo; networkHash: string; status: TokenBridgeStatus; confirmation: number; requiredConfirmations: number; protected abstract _setup(): Promise<void>; fetch(): Promise<void>; execute(targetProvider: IWalletProvider): Promise<void>; withdraw(): Promise<void>; } export interface ITaskData { taskId?: string; creator?: string; targetNetwork?: string; targets?: string[]; values?: number[]; calldatas?: string[]; userSeed?: number; startTime?: number; endTime?: number; signers?: string[]; signersN?: number; signatures?: string[]; } export declare function generateITaskData(task?: TaskCreated, ethereum?: boolean): ITaskData; export declare function convertITaskData(task: ITaskData, ethereum: boolean): ITaskData; export interface IOracleTask { taskId: string; verifyTask(): Promise<{ bridge: string; node: INodeInfo; eventData: ITaskData; discrepency: boolean; }>; approveTask(provider: IWalletProvider, signature: string): Promise<void>; declineTask(provider: IWalletProvider, signature: string): Promise<void>; } export declare abstract class OracleTask implements IOracleTask { taskId: string; protected _bridge: string; protected _node: INodeInfo; protected _eventData: ITaskData; protected _peggedTask: boolean; protected _sourceProvider: IWalletProvider; protected _discrepency: boolean; constructor(taskId: string, _bridge: string, _node: INodeInfo, _eventData: ITaskData, _peggedTask: boolean, _sourceProvider: IWalletProvider); abstract verifyTask(): Promise<{ bridge: string; node: INodeInfo; eventData: ITaskData; discrepency: boolean; }>; abstract approveTask(provider: IWalletProvider, signature: string): Promise<void>; abstract declineTask(provider: IWalletProvider, signature: string): Promise<void>; }