Skip to content

Commit b873c9f

Browse files
committed
Add missing types & datapoints
1 parent 8b52a86 commit b873c9f

16 files changed

+144
-53
lines changed

src/api.types.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ export type DepositOrderResponse = {
158158
senderPubKeyHash: string,
159159
senderStakeKeyHash: string | null,
160160
statuses: OperationStatusResponse[],
161+
txHash: string,
162+
outputIndex: number,
161163
liquidityPool: LiquidityPoolResponse,
162164
};
163165

@@ -170,6 +172,8 @@ export type WithdrawOrderResponse = {
170172
senderPubKeyHash: string,
171173
senderStakeKeyHash: string | null,
172174
statuses: OperationStatusResponse[],
175+
txHash: string,
176+
outputIndex: number,
173177
liquidityPool: LiquidityPoolResponse,
174178
}
175179

@@ -180,15 +184,4 @@ export type PriceInfo = {
180184
dayHigh: number,
181185
dayChange: number,
182186
hourChange: number,
183-
}
184-
185-
export type Tick = {
186-
entity?: LiquidityPool | OrderBook | null;
187-
time: number;
188-
open: number;
189-
high: number;
190-
low: number;
191-
close: number;
192-
volume: number;
193-
}
194-
187+
}

src/api/LiquidityPoolService.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
PaginationParams,
1010
PriceInfo,
1111
SwapOrderResponse,
12-
Tick,
1312
WithdrawOrderResponse
1413
} from '../api.types';
1514
import { Asset, Token } from '../models/Asset';
@@ -18,6 +17,7 @@ import { OperationStatus } from '../models/OperationStatus';
1817
import { WithdrawOrder } from '../models/WithdrawOrder';
1918
import { DepositOrder } from '../models/DepositOrder';
2019
import { TickInterval } from '../enums';
20+
import { Tick } from '../models/Tick';
2121

2222
export class LiquidityPoolService extends BaseApiService {
2323

@@ -59,6 +59,7 @@ export class LiquidityPoolService extends BaseApiService {
5959
data: response.data.data.map((order: SwapOrderResponse) => {
6060
const operationStatuses: OperationStatus[] = order.statuses.map((status: OperationStatusResponse) => {
6161
return new OperationStatus(
62+
null,
6263
status.status,
6364
status.slot,
6465
status.txHash,
@@ -104,6 +105,7 @@ export class LiquidityPoolService extends BaseApiService {
104105
data: response.data.data.map((order: DepositOrderResponse) => {
105106
const operationStatuses: OperationStatus[] = order.statuses.map((status: OperationStatusResponse) => {
106107
return new OperationStatus(
108+
null,
107109
status.status,
108110
status.slot,
109111
status.txHash,
@@ -130,6 +132,8 @@ export class LiquidityPoolService extends BaseApiService {
130132
order.senderPubKeyHash,
131133
order.senderStakeKeyHash,
132134
operationStatuses,
135+
order.txHash,
136+
Number(order.outputIndex),
133137
liquidityPool,
134138
);
135139
}),
@@ -145,6 +149,7 @@ export class LiquidityPoolService extends BaseApiService {
145149
data: response.data.data.map((order: WithdrawOrderResponse) => {
146150
const operationStatuses: OperationStatus[] = order.statuses.map((status: OperationStatusResponse) => {
147151
return new OperationStatus(
152+
null,
148153
status.status,
149154
status.slot,
150155
status.txHash,
@@ -167,6 +172,8 @@ export class LiquidityPoolService extends BaseApiService {
167172
order.senderPubKeyHash,
168173
order.senderStakeKeyHash,
169174
operationStatuses,
175+
order.txHash,
176+
Number(order.outputIndex),
170177
liquidityPool,
171178
);
172179
}),
@@ -176,7 +183,7 @@ export class LiquidityPoolService extends BaseApiService {
176183
}
177184

178185
public prices(poolIdentifiers: string[]): Promise<PriceInfo[]> {
179-
return axios.post(`${this._baseHost}/api/liquidity-pools/analytics/prices`, {
186+
return axios.post(`${this._baseHost}/api/liquidity-pools/prices`, {
180187
identifiers: poolIdentifiers,
181188
}).then((response: any) => response.data.map((entry: any) => {
182189
return {
@@ -201,10 +208,17 @@ export class LiquidityPoolService extends BaseApiService {
201208
}
202209

203210
return axios.get(url).then((response: any) => {
204-
return response.data.map((tick: any) => {
205-
tick.time *= 1000;
206-
207-
return tick;
211+
return response.data.map((tickInfo: any) => {
212+
return new Tick(
213+
tickInfo.liquidityPool ? this.responseToLiquidityPool(tickInfo.liquidityPool) : null,
214+
tickInfo.resolution,
215+
tickInfo.time * 1000,
216+
tickInfo.open,
217+
tickInfo.high,
218+
tickInfo.low,
219+
tickInfo.close,
220+
tickInfo.volume,
221+
);
208222
});
209223
});
210224
}

src/api/OrderBookService.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import {
55
PaginatedResponse,
66
PaginationParams,
77
PriceInfo,
8-
Tick
98
} from '../api.types';
109
import axios from 'axios';
1110
import { Asset, Token } from '../models/Asset';
1211
import { OrderBook } from '../models/OrderBook';
1312
import { OrderBookOrder } from '../models/OrderBookOrder';
1413
import { TickInterval } from '../enums';
14+
import { Tick } from '../models/Tick';
1515

1616
export class OrderBookService extends BaseApiService {
1717

@@ -142,10 +142,29 @@ export class OrderBookService extends BaseApiService {
142142
}
143143

144144
return axios.get(url).then((response: any) => {
145-
return response.data.map((tick: any) => {
146-
tick.time *= 1000;
145+
return response.data.map((tickInfo: any) => {
146+
const orderBook: OrderBook | null = tickInfo.orderBook
147+
? new OrderBook(
148+
tickInfo.orderBook.dex,
149+
tickInfo.orderBook.identifier,
150+
tickInfo.orderBook.tokenA === null
151+
? 'lovelace'
152+
: new Asset(tickInfo.orderBook.tokenA.policyId, tickInfo.orderBook.tokenA.nameHex, tickInfo.orderBook.tokenA.decimals, tickInfo.orderBook.tokenA.isVerified, tickInfo.orderBook.tokenA.isLpToken, tickInfo.orderBook.tokenA.name, tickInfo.orderBook.tokenA.ticker, tickInfo.orderBook.tokenA.logo, tickInfo.orderBook.tokenA.description),
153+
new Asset(tickInfo.orderBook.tokenB.policyId, tickInfo.orderBook.tokenB.nameHex, tickInfo.orderBook.tokenB.decimals, tickInfo.orderBook.tokenB.isVerified, tickInfo.orderBook.tokenB.isLpToken, tickInfo.orderBook.tokenB.name, tickInfo.orderBook.tokenB.ticker, tickInfo.orderBook.tokenB.logo, tickInfo.orderBook.tokenB.description),
154+
tickInfo.orderBook.createdSlot,
155+
)
156+
: null;
147157

148-
return tick;
158+
return new Tick(
159+
orderBook,
160+
tickInfo.resolution,
161+
tickInfo.time * 1000,
162+
tickInfo.open,
163+
tickInfo.high,
164+
tickInfo.low,
165+
tickInfo.close,
166+
tickInfo.volume,
167+
);
149168
});
150169
});
151170
}

src/api/OrdersService.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export class OrdersService extends BaseApiService {
3636
data: response.data.data.map((order: SwapOrderResponse) => {
3737
const operationStatuses: OperationStatus[] = order.statuses.map((status: OperationStatusResponse) => {
3838
return new OperationStatus(
39+
null,
3940
status.status,
4041
status.slot,
4142
status.txHash,
@@ -89,6 +90,7 @@ export class OrdersService extends BaseApiService {
8990
data: response.data.data.map((order: DepositOrderResponse) => {
9091
const operationStatuses: OperationStatus[] = order.statuses.map((status: OperationStatusResponse) => {
9192
return new OperationStatus(
93+
null,
9294
status.status,
9395
status.slot,
9496
status.txHash,
@@ -113,6 +115,8 @@ export class OrdersService extends BaseApiService {
113115
order.senderPubKeyHash,
114116
order.senderStakeKeyHash,
115117
operationStatuses,
118+
order.txHash,
119+
Number(order.outputIndex),
116120
liquidityPool,
117121
);
118122
}),
@@ -135,6 +139,7 @@ export class OrdersService extends BaseApiService {
135139
data: response.data.data.map((order: WithdrawOrderResponse) => {
136140
const operationStatuses: OperationStatus[] = order.statuses.map((status: OperationStatusResponse) => {
137141
return new OperationStatus(
142+
null,
138143
status.status,
139144
status.slot,
140145
status.txHash,
@@ -155,6 +160,8 @@ export class OrdersService extends BaseApiService {
155160
order.senderPubKeyHash,
156161
order.senderStakeKeyHash,
157162
operationStatuses,
163+
order.txHash,
164+
Number(order.outputIndex),
158165
liquidityPool,
159166
);
160167
}),

src/index.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@ export * from './enums';
99
* Model exports.
1010
*/
1111
export * from './models/Asset';
12+
export * from './models/DepositOrder';
1213
export * from './models/LiquidityPool';
1314
export * from './models/LiquidityPoolState';
14-
export * from './models/Statusable';
1515
export * from './models/OperationStatus';
16-
export * from './models/SwapOrder';
17-
export * from './models/DepositOrder';
18-
export * from './models/WithdrawOrder';
1916
export * from './models/OrderBook';
17+
export * from './models/OrderBookMatch';
2018
export * from './models/OrderBookOrder';
19+
export * from './models/Statusable';
20+
export * from './models/SwapOrder';
21+
export * from './models/Sync';
22+
export * from './models/Tick';
23+
export * from './models/WithdrawOrder';
2124

2225
/**
2326
* Service exports.

src/models/DepositOrder.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ export class DepositOrder extends Statusable {
1414
public senderPubKeyHash: string,
1515
public senderStakeKeyHash: string | null,
1616
public statuses: OperationStatus[],
17+
public txHash: string,
18+
public outputIndex: number,
1719
public liquidityPool?: LiquidityPool | null,
1820
) {
1921
super(statuses);

src/models/OperationStatus.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import { Statusable } from './Statusable';
2+
13
export class OperationStatus {
24

35
constructor(
6+
public entity: Statusable | null,
47
public status: number,
58
public slot: number,
69
public txHash: string,

src/models/SwapOrder.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ export class SwapOrder extends Statusable {
2525
}
2626

2727
get price(): number {
28-
if (! this.liquidityPool || ! this.actualReceive) return 0;
28+
if (! this.liquidityPool) return 0;
2929

3030
// Buy
3131
if (tokenId(this.swapInToken) === tokenId(this.liquidityPool.tokenA)) {
3232
return (Number(this.swapInAmount) / 10**tokenDecimals(this.swapInToken ?? 'lovelace'))
33-
/ (Number(this.actualReceive) / 10**tokenDecimals(this.swapOutToken ?? 'lovelace'));
33+
/ (Number(this.actualReceive ?? this.minReceive) / 10**tokenDecimals(this.swapOutToken ?? 'lovelace'));
3434
}
3535

3636
// Sell
37-
return (Number(this.actualReceive) / 10**tokenDecimals(this.swapOutToken ?? 'lovelace'))
37+
return (Number(this.actualReceive ?? this.minReceive) / 10**tokenDecimals(this.swapOutToken ?? 'lovelace'))
3838
/ (Number(this.swapInAmount) / 10**tokenDecimals(this.swapInToken ?? 'lovelace'));
3939
}
4040

src/models/Tick.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { LiquidityPool } from './LiquidityPool';
2+
import { OrderBook } from './OrderBook';
3+
4+
export class Tick {
5+
6+
constructor(
7+
public entity: LiquidityPool | OrderBook | null,
8+
public resolution: string,
9+
public time: number,
10+
public open: number,
11+
public high: number,
12+
public low: number,
13+
public close: number,
14+
public volume: number,
15+
) {
16+
}
17+
18+
}

src/models/WithdrawOrder.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ export class WithdrawOrder extends Statusable {
1414
public senderPubKeyHash: string,
1515
public senderStakeKeyHash: string | null,
1616
public statuses: OperationStatus[],
17+
public txHash: string,
18+
public outputIndex: number,
1719
public liquidityPool?: LiquidityPool | null,
1820
) {
1921
super(statuses);

0 commit comments

Comments
 (0)