-
Notifications
You must be signed in to change notification settings - Fork 76
/
interfaces.ts
123 lines (109 loc) · 2.7 KB
/
interfaces.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import { TxStatus } from '@mempool/mempool.js/lib/interfaces/bitcoin/transactions';
import * as bitcoin from 'bitcoinjs-lib';
export class InvalidArgumentError extends Error {
constructor(message: string) {
super(message);
this.name = 'InvalidArgumentError';
}
}
export interface WitnessUtxo {
script: Buffer;
value: number;
}
export interface FeeProvider {
getMakerFeeBp(maker: string): Promise<number>;
getTakerFeeBp(taker: string): Promise<number>;
}
export interface ItemProvider {
getTokenByOutput(output: string): Promise<IOrdItem | null>;
getTokenById(tokenId: string): Promise<IOrdItem | null>;
}
export interface IOrdItem {
// fixed
id: string;
contentURI: string;
contentType: string;
contentPreviewURI: string;
sat: number;
satName: string;
genesisTransaction: string;
genesisTransactionBlockTime?: string;
genesisTransactionBlockHash?: string;
inscriptionNumber: number;
meta?: IOrdItemMeta;
chain: string;
owner: string;
// dynamic
location: string;
locationBlockHeight?: number;
locationBlockTime?: string;
locationBlockHash?: string;
outputValue: number;
output: string;
mempoolTxId?: string;
// listing
listed: boolean;
listedAt?: string;
listedPrice?: number;
listedMakerFeeBp?: number;
listedSellerReceiveAddress?: string;
}
export interface IOrdItemMeta {
name: string;
high_res_img_url?: string;
status?: string;
rank?: number;
attributes?: IOrdItemAttribute[];
}
export interface IOrdItemAttribute {
trait_type: string;
value: string;
status?: string;
percent?: string;
}
export interface IOrdAPIPostPSBTBuying {
price: number;
tokenId: string;
buyerAddress: string;
buyerTokenReceiveAddress: string;
signedBuyingPSBTBase64: string;
}
export interface IOrdAPIPostPSBTListing {
price: number;
tokenId: string;
sellerReceiveAddress: string;
signedListingPSBTBase64: string;
tapInternalKey?: string;
}
export interface IListingState {
seller: {
makerFeeBp: number;
sellerOrdAddress: string;
price: number;
ordItem: IOrdItem;
sellerReceiveAddress: string;
unsignedListingPSBTBase64?: string;
signedListingPSBTBase64?: string;
tapInternalKey?: string;
};
buyer?: {
takerFeeBp: number;
buyerAddress: string;
buyerTokenReceiveAddress: string;
feeRateTier: string;
buyerPublicKey?: string;
unsignedBuyingPSBTBase64?: string;
unsignedBuyingPSBTInputSize?: number;
signedBuyingPSBTBase64?: string;
buyerDummyUTXOs?: utxo[];
buyerPaymentUTXOs?: utxo[]; // after the selection
mergedSignedBuyingPSBTBase64?: string;
};
}
export interface utxo {
txid: string;
vout: number;
value: number;
status: TxStatus;
tx: bitcoin.Transaction;
}