@cryptovarna/tedex-api
Version:
TEDEX API
125 lines (124 loc) • 3.88 kB
TypeScript
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>;
}