Skip to content

Commit

Permalink
Return estimated and max fees; Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
maxima-net committed Aug 19, 2022
1 parent 067240b commit b950bd6
Show file tree
Hide file tree
Showing 11 changed files with 58 additions and 48 deletions.
8 changes: 4 additions & 4 deletions src/blockchain/atomexProtocolV1/atomexProtocolV1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type { BigNumber } from 'bignumber.js';

import type { Currency } from '../../common/index';
import type { AtomexProtocol } from '../atomexProtocol';
import type { Transaction } from '../models/index';
import type { FeesInfo, Transaction } from '../models/index';
import type { AtomexProtocolV1InitiateParameters } from './initiateParameters';
import type { AtomexProtocolV1RedeemParameters } from './redeemParameters';
import type { AtomexProtocolV1RefundParameters } from './refundParameters';
Expand All @@ -12,12 +12,12 @@ export interface AtomexProtocolV1 extends AtomexProtocol {
readonly currencyId: Currency['id'];

initiate(params: AtomexProtocolV1InitiateParameters): Promise<Transaction>;
getEstimatedInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber>;
getInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo>;

redeem(params: AtomexProtocolV1RedeemParameters): Promise<Transaction>;
getEstimatedRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber>;
getRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo>;
getRedeemReward(nativeTokenPriceInUsd: number, nativeTokenPriceInCurrency: number): Promise<BigNumber>;

refund(params: AtomexProtocolV1RefundParameters): Promise<Transaction>;
getEstimatedRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber>;
getRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo>;
}
2 changes: 1 addition & 1 deletion src/blockchain/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export { WalletsManager } from './walletsManager';
export { isAtomexProtocolV1 } from './atomexProtocolV1/index';

export type { AtomexProtocolOptions, AtomexSignature, Transaction } from './models/index';
export type { AtomexProtocolOptions, AtomexSignature, Transaction, FeesInfo } from './models/index';
export type { AtomexProtocol } from './atomexProtocol';
export type {
AtomexProtocolV1, AtomexProtocolV1Options,
Expand Down
6 changes: 6 additions & 0 deletions src/blockchain/models/feesInfo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import type BigNumber from 'bignumber.js';

export interface FeesInfo {
estimated: BigNumber;
max: BigNumber;
}
1 change: 1 addition & 0 deletions src/blockchain/models/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export type { AtomexProtocolOptions } from './atomexProtocolOptions';
export type { AtomexSignature } from './atomexSignature';
export type { Transaction } from './transaction';
export type { FeesInfo } from './feesInfo';
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type BigNumber from 'bignumber.js';
import type {
AtomexBlockchainProvider,
AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
Transaction, WalletsManager
FeesInfo, Transaction, WalletsManager
} from '../../blockchain/index';
import type { AtomexNetwork } from '../../common/index';
import type { DeepReadonly } from '../../core/index';
Expand All @@ -28,7 +28,7 @@ export class ERC20EthereumWeb3AtomexProtocolV1 extends Web3AtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
getInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
throw new Error('Method not implemented.');
}

Expand All @@ -40,15 +40,15 @@ export class ERC20EthereumWeb3AtomexProtocolV1 extends Web3AtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
getRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
throw new Error('Method not implemented.');
}

refund(_params: AtomexProtocolV1RefundParameters): Promise<Transaction> {
throw new Error('Method not implemented.');
}

getEstimatedRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
getRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
throw new Error('Method not implemented.');
}
}
8 changes: 4 additions & 4 deletions src/ethereum/atomexProtocol/ethereumWeb3AtomexProtocolV1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type BigNumber from 'bignumber.js';
import type {
AtomexBlockchainProvider,
AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
Transaction, WalletsManager
FeesInfo, Transaction, WalletsManager
} from '../../blockchain/index';
import type { AtomexNetwork } from '../../common/index';
import type { DeepReadonly } from '../../core/index';
Expand All @@ -24,7 +24,7 @@ export class EthereumWeb3AtomexProtocolV1 extends Web3AtomexProtocolV1 {
throw new Error('Method not implemented.');
}

async getEstimatedInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
async getInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
throw new Error('Method not implemented.');
}

Expand All @@ -36,15 +36,15 @@ export class EthereumWeb3AtomexProtocolV1 extends Web3AtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
getRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
throw new Error('Method not implemented.');
}

refund(_params: AtomexProtocolV1RefundParameters): Promise<Transaction> {
throw new Error('Method not implemented.');
}

getEstimatedRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
getRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
throw new Error('Method not implemented.');
}
}
8 changes: 4 additions & 4 deletions src/evm/atomexProtocol/web3AtomexProtocolV1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type Web3 from 'web3';
import type {
AtomexBlockchainProvider,
AtomexProtocolV1, AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
BlockchainWallet, Transaction, WalletsManager
BlockchainWallet, FeesInfo, Transaction, WalletsManager
} from '../../blockchain/index';
import type { AtomexNetwork } from '../../common/index';
import type { DeepReadonly } from '../../core/index';
Expand All @@ -28,17 +28,17 @@ export abstract class Web3AtomexProtocolV1 implements AtomexProtocolV1 {

abstract initiate(_params: AtomexProtocolV1InitiateParameters): Promise<Transaction>;

abstract getEstimatedInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber>;
abstract getInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo>;

abstract redeem(_params: AtomexProtocolV1RedeemParameters): Promise<Transaction>;

abstract getRedeemReward(_nativeTokenPriceInUsd: number, _nativeTokenPriceInCurrency: number): Promise<BigNumber>;

abstract getEstimatedRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber>;
abstract getRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo>;

abstract refund(_params: AtomexProtocolV1RefundParameters): Promise<Transaction>;

abstract getEstimatedRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber>;
abstract getRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo>;

protected async getReadonlyWeb3(): Promise<Web3> {
const toolkit = await this.atomexBlockchainProvider.getReadonlyToolkit<Web3>('web3', this.blockchain);
Expand Down
14 changes: 7 additions & 7 deletions src/tezos/atomexProtocol/fa12TezosTaquitoAtomexProtocolV1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type BigNumber from 'bignumber.js';
import type {
AtomexBlockchainProvider,
AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
Transaction, WalletsManager
FeesInfo, Transaction, WalletsManager
} from '../../blockchain/index';
import type { AtomexNetwork } from '../../common/index';
import type { DeepReadonly } from '../../core/index';
Expand All @@ -28,8 +28,8 @@ export class FA12TezosTaquitoAtomexProtocolV1 extends TaquitoAtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedInitiateFees(params);
getInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getInitiateFees(params);
}

redeem(_params: AtomexProtocolV1RedeemParameters): Promise<Transaction> {
Expand All @@ -40,15 +40,15 @@ export class FA12TezosTaquitoAtomexProtocolV1 extends TaquitoAtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedRedeemFees(params);
getRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getRedeemFees(params);
}

refund(_params: AtomexProtocolV1RefundParameters): Promise<Transaction> {
throw new Error('Method not implemented.');
}

getEstimatedRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedRefundFees(params);
getRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getRefundFees(params);
}
}
14 changes: 7 additions & 7 deletions src/tezos/atomexProtocol/fa2TezosTaquitoAtomexProtocolV1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type BigNumber from 'bignumber.js';
import type {
AtomexBlockchainProvider,
AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
Transaction, WalletsManager
FeesInfo, Transaction, WalletsManager
} from '../../blockchain/index';
import type { AtomexNetwork } from '../../common/index';
import type { DeepReadonly } from '../../core/index';
Expand All @@ -28,8 +28,8 @@ export class FA2TezosTaquitoAtomexProtocolV1 extends TaquitoAtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedInitiateFees(params);
getInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getInitiateFees(params);
}

redeem(_params: AtomexProtocolV1RedeemParameters): Promise<Transaction> {
Expand All @@ -40,15 +40,15 @@ export class FA2TezosTaquitoAtomexProtocolV1 extends TaquitoAtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedRedeemFees(params);
getRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getRedeemFees(params);
}

refund(_params: AtomexProtocolV1RefundParameters): Promise<Transaction> {
throw new Error('Method not implemented.');
}

getEstimatedRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedRefundFees(params);
getRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getRefundFees(params);
}
}
23 changes: 13 additions & 10 deletions src/tezos/atomexProtocol/taquitoAtomexProtocolV1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import BigNumber from 'bignumber.js';

import type {
AtomexBlockchainProvider,
AtomexProtocolV1, AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
AtomexProtocolV1, FeesInfo, AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
BlockchainWallet, Transaction, WalletsManager
} from '../../blockchain/index';
import type { AtomexNetwork } from '../../common/index';
Expand All @@ -29,28 +29,31 @@ export abstract class TaquitoAtomexProtocolV1 implements AtomexProtocolV1 {

abstract initiate(_params: AtomexProtocolV1InitiateParameters): Promise<Transaction>;

getEstimatedInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
const fee = new BigNumber(this.atomexProtocolOptions.initiateOperation.fee).div(mutezInTez);
getInitiateFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
const estimated = new BigNumber(this.atomexProtocolOptions.initiateOperation.fee).div(mutezInTez);
const result: FeesInfo = { estimated, max: estimated };

return Promise.resolve(fee);
return Promise.resolve(result);
}

abstract redeem(_params: AtomexProtocolV1RedeemParameters): Promise<Transaction>;

abstract getRedeemReward(_nativeTokenPriceInUsd: number, _nativeTokenPriceInCurrency: number): Promise<BigNumber>;

getEstimatedRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
const fee = new BigNumber(this.atomexProtocolOptions.redeemOperation.fee).div(mutezInTez);
getRedeemFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
const estimated = new BigNumber(this.atomexProtocolOptions.redeemOperation.fee).div(mutezInTez);
const result: FeesInfo = { estimated, max: estimated };

return Promise.resolve(fee);
return Promise.resolve(result);
}

abstract refund(_params: AtomexProtocolV1RefundParameters): Promise<Transaction>;

getEstimatedRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
const fee = new BigNumber(this.atomexProtocolOptions.refundOperation.fee).div(mutezInTez);
getRefundFees(_params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
const estimated = new BigNumber(this.atomexProtocolOptions.refundOperation.fee).div(mutezInTez);
const result: FeesInfo = { estimated, max: estimated };

return Promise.resolve(fee);
return Promise.resolve(result);
}

protected async getReadonlyTezosToolkit(): Promise<TezosToolkit> {
Expand Down
14 changes: 7 additions & 7 deletions src/tezos/atomexProtocol/tezosTaquitoAtomexProtocolV1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type BigNumber from 'bignumber.js';
import type {
AtomexBlockchainProvider,
AtomexProtocolV1InitiateParameters, AtomexProtocolV1RedeemParameters, AtomexProtocolV1RefundParameters,
Transaction, WalletsManager
FeesInfo, Transaction, WalletsManager
} from '../../blockchain/index';
import type { AtomexNetwork } from '../../common/index';
import type { DeepReadonly } from '../../core/index';
Expand All @@ -28,8 +28,8 @@ export class TezosTaquitoAtomexProtocolV1 extends TaquitoAtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedInitiateFees(params);
getInitiateFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getInitiateFees(params);
}

redeem(_params: AtomexProtocolV1RedeemParameters): Promise<Transaction> {
Expand All @@ -40,15 +40,15 @@ export class TezosTaquitoAtomexProtocolV1 extends TaquitoAtomexProtocolV1 {
throw new Error('Method not implemented.');
}

getEstimatedRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedRedeemFees(params);
getRedeemFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getRedeemFees(params);
}

refund(_params: AtomexProtocolV1RefundParameters): Promise<Transaction> {
throw new Error('Method not implemented.');
}

getEstimatedRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<BigNumber> {
return super.getEstimatedRefundFees(params);
getRefundFees(params: Partial<AtomexProtocolV1InitiateParameters>): Promise<FeesInfo> {
return super.getRefundFees(params);
}
}

0 comments on commit b950bd6

Please sign in to comment.