@gobob/bob-sdk 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gateway/tokens.js +65 -1
- package/dist/gateway/tokens.js.map +1 -1
- package/dist/ordinal-api/index.d.ts +3 -0
- package/dist/ordinal-api/index.js +18 -1
- package/dist/ordinal-api/index.js.map +1 -1
- package/dist/wallet/utxo.d.ts +3 -1
- package/dist/wallet/utxo.js +72 -55
- package/dist/wallet/utxo.js.map +1 -1
- package/package.json +1 -1
package/dist/gateway/tokens.js
CHANGED
|
@@ -170,7 +170,71 @@ const segmentTokens = [
|
|
|
170
170
|
logoURI: 'https://raw.githubusercontent.com/bob-collective/bob/master/assets/segment.svg',
|
|
171
171
|
},
|
|
172
172
|
];
|
|
173
|
-
const
|
|
173
|
+
const avalonTokens = [
|
|
174
|
+
{
|
|
175
|
+
name: 'Avalon TBTC',
|
|
176
|
+
symbol: 'aBOBTBTC',
|
|
177
|
+
decimals: 18,
|
|
178
|
+
nobridge: true,
|
|
179
|
+
tokens: {
|
|
180
|
+
bob: {
|
|
181
|
+
address: '0x5E007Ed35c7d89f5889eb6FD0cdCAa38059560ef',
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
logoURI: 'https://app.avalonfinance.xyz/icons/tokens/avalon.svg',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'Avalon WBTC',
|
|
188
|
+
symbol: 'aBOBWBTC',
|
|
189
|
+
decimals: 8,
|
|
190
|
+
nobridge: true,
|
|
191
|
+
tokens: {
|
|
192
|
+
bob: {
|
|
193
|
+
address: '0xd6890176e8d912142AC489e8B5D8D93F8dE74D60',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
logoURI: 'https://app.avalonfinance.xyz/icons/tokens/avalon.svg',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: 'Avalon SOLVBTCBBN',
|
|
200
|
+
symbol: 'aBOBSOLVBTCBBN',
|
|
201
|
+
decimals: 18,
|
|
202
|
+
nobridge: true,
|
|
203
|
+
tokens: {
|
|
204
|
+
bob: {
|
|
205
|
+
address: '0x2E6500A7Add9a788753a897e4e3477f651c612eb',
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
logoURI: 'https://app.avalonfinance.xyz/icons/tokens/avalon.svg',
|
|
209
|
+
},
|
|
210
|
+
];
|
|
211
|
+
const ionicTokens = [
|
|
212
|
+
{
|
|
213
|
+
name: 'Ionic TBTC',
|
|
214
|
+
symbol: 'iontBTC',
|
|
215
|
+
decimals: 18,
|
|
216
|
+
nobridge: true,
|
|
217
|
+
tokens: {
|
|
218
|
+
bob: {
|
|
219
|
+
address: '0x68e0e4d875FDe34fc4698f40ccca0Db5b67e3693',
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
logoURI: 'https://doc.ionic.money/~gitbook/image?url=https://1954749119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%252F4L4EczL4rCp3jyJhAxHG%252Fuploads%252FPy57T6N8vDpy1jGqxElR%252FTwitter%2520Avatar%2520green.png?alt%3Dmedia%26token%3D1808baa5-0996-41d1-ad6d-fe09c7188cdc&width=768&dpr=4&quality=100&sign=14802451&sv=2',
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: 'Ionic Wrapped BTC',
|
|
226
|
+
symbol: 'ionWBTC',
|
|
227
|
+
decimals: 8,
|
|
228
|
+
nobridge: true,
|
|
229
|
+
tokens: {
|
|
230
|
+
bob: {
|
|
231
|
+
address: '0xEBc8a7EE7f1D6534eBF45Bd5311203BF0A17493c',
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
logoURI: 'https://doc.ionic.money/~gitbook/image?url=https://1954749119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%252F4L4EczL4rCp3jyJhAxHG%252Fuploads%252FPy57T6N8vDpy1jGqxElR%252FTwitter%2520Avatar%2520green.png?alt%3Dmedia%26token%3D1808baa5-0996-41d1-ad6d-fe09c7188cdc&width=768&dpr=4&quality=100&sign=14802451&sv=2',
|
|
235
|
+
},
|
|
236
|
+
];
|
|
237
|
+
const TOKENS = [...bobTokens, ...bobSepoliaTokens, ...shoebillTokens, ...segmentTokens, ...avalonTokens, ...ionicTokens];
|
|
174
238
|
exports.SYMBOL_LOOKUP = {};
|
|
175
239
|
exports.ADDRESS_LOOKUP = {};
|
|
176
240
|
exports.SYMBOL_LOOKUP[types_1.ChainId.BOB] = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/gateway/tokens.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/gateway/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,6 +80,7 @@ export interface InscriptionJson<InscriptionId, SatPoint> {
|
|
|
80
80
|
content_type: string | null;
|
|
81
81
|
effective_content_type: string | null;
|
|
82
82
|
fee: number;
|
|
83
|
+
metaprotocol: string | null;
|
|
83
84
|
height: number;
|
|
84
85
|
id: InscriptionId;
|
|
85
86
|
next: InscriptionId | null;
|
|
@@ -101,8 +102,10 @@ export declare class OrdinalsClient {
|
|
|
101
102
|
getInscriptionsFromBlock(height: number): Promise<InscriptionsJson<InscriptionId>>;
|
|
102
103
|
getInscriptionsFromOutPoint(outPoint: OutPoint): Promise<OutputJson>;
|
|
103
104
|
getOutputsFromAddress(address: string, type?: 'cardinal' | 'inscribed' | 'runic' | 'any'): Promise<OutputJson[]>;
|
|
105
|
+
getOutputsFromOutPoints(outpoints: string[]): Promise<OutputJson[]>;
|
|
104
106
|
getInscriptionsFromSat(sat: number): Promise<SatJson<InscriptionId>>;
|
|
105
107
|
getInscriptionsFromStartBlock(startHeight: number): Promise<InscriptionsJson<InscriptionId>>;
|
|
106
108
|
private getJson;
|
|
109
|
+
private postJson;
|
|
107
110
|
private parseInscriptionsJson;
|
|
108
111
|
}
|
|
@@ -100,6 +100,9 @@ class OrdinalsClient {
|
|
|
100
100
|
searchParams.append('type', type);
|
|
101
101
|
return this.getJson(`${this.basePath}/outputs/${address}?${searchParams}`);
|
|
102
102
|
}
|
|
103
|
+
getOutputsFromOutPoints(outpoints) {
|
|
104
|
+
return this.postJson(`${this.basePath}/outputs`, outpoints);
|
|
105
|
+
}
|
|
103
106
|
async getInscriptionsFromSat(sat) {
|
|
104
107
|
const satJson = await this.getJson(`${this.basePath}/sat/${sat}`);
|
|
105
108
|
return {
|
|
@@ -120,7 +123,21 @@ class OrdinalsClient {
|
|
|
120
123
|
if (!response.ok) {
|
|
121
124
|
throw new Error(response.statusText);
|
|
122
125
|
}
|
|
123
|
-
return
|
|
126
|
+
return response.json();
|
|
127
|
+
}
|
|
128
|
+
async postJson(url, body) {
|
|
129
|
+
const response = await fetch(url, {
|
|
130
|
+
method: 'POST',
|
|
131
|
+
headers: {
|
|
132
|
+
'Content-Type': 'application/json',
|
|
133
|
+
Accept: 'application/json',
|
|
134
|
+
},
|
|
135
|
+
body: JSON.stringify(body),
|
|
136
|
+
});
|
|
137
|
+
if (!response.ok) {
|
|
138
|
+
throw new Error(response.statusText);
|
|
139
|
+
}
|
|
140
|
+
return response.json();
|
|
124
141
|
}
|
|
125
142
|
parseInscriptionsJson(inscriptionsJson) {
|
|
126
143
|
const ids = inscriptionsJson.ids.map((id) => InscriptionId.fromString(id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinal-api/index.ts"],"names":[],"mappings":";;;AAIa,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAM9C,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAM7D,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAQ1E,IAAc,aAAa,CAa1B;AAbD,WAAc,aAAa;IACvB,SAAgB,QAAQ,CAAC,EAAiB;QACtC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAFe,sBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO;YACH,IAAI;YACJ,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;SAC7B,CAAC;IACN,CAAC;IAPe,wBAAU,aAOzB,CAAA;AACL,CAAC,EAba,aAAa,6BAAb,aAAa,QAa1B;AAQD,IAAc,QAAQ,CAarB;AAbD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO;YACH,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;SAC3B,CAAC;IACN,CAAC;IAPe,mBAAU,aAOzB,CAAA;AACL,CAAC,EAba,QAAQ,wBAAR,QAAQ,QAarB;AAQD,IAAc,QAAQ,CAgBrB;AAhBD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO;YACH,QAAQ,EAAE;gBACN,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;aAC3B;YACD,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;SAC/B,CAAC;IACN,CAAC;IAVe,mBAAU,aAUzB,CAAA;AACL,CAAC,EAhBa,QAAQ,wBAAR,QAAQ,QAgBrB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinal-api/index.ts"],"names":[],"mappings":";;;AAIa,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAM9C,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAM7D,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAQ1E,IAAc,aAAa,CAa1B;AAbD,WAAc,aAAa;IACvB,SAAgB,QAAQ,CAAC,EAAiB;QACtC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAFe,sBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO;YACH,IAAI;YACJ,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;SAC7B,CAAC;IACN,CAAC;IAPe,wBAAU,aAOzB,CAAA;AACL,CAAC,EAba,aAAa,6BAAb,aAAa,QAa1B;AAQD,IAAc,QAAQ,CAarB;AAbD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO;YACH,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;SAC3B,CAAC;IACN,CAAC;IAPe,mBAAU,aAOzB,CAAA;AACL,CAAC,EAba,QAAQ,wBAAR,QAAQ,QAarB;AAQD,IAAc,QAAQ,CAgBrB;AAhBD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO;YACH,QAAQ,EAAE;gBACN,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;aAC3B;YACD,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;SAC/B,CAAC;IACN,CAAC;IAVe,mBAAU,aAUzB,CAAA;AACL,CAAC,EAhBa,QAAQ,wBAAR,QAAQ,QAgBrB;AAwRD,MAAa,cAAc;IAGvB,YAAY,eAAuB,SAAS;QACxC,QAAQ,YAAY,EAAE,CAAC;YACnB,KAAK,SAAS;gBACV,IAAI,CAAC,QAAQ,GAAG,6BAAqB,CAAC;gBACtC,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,QAAQ,GAAG,6BAAqB,CAAC;gBACtC,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,QAAQ,GAAG,6BAAqB,CAAC;gBACtC,MAAM;YACV;gBACI,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;QACrC,CAAC;IACL,CAAC;IAcD,kBAAkB,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAc,GAAG,IAAI,CAAC,QAAQ,YAAY,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAeD,KAAK,CAAC,oBAAoB,CAAC,EAAiB;QACxC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,gBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CACtC,GAAG,IAAI,CAAC,QAAQ,gBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAC/D,CAAC;QACF,OAAO;YACH,GAAG,eAAe;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;YAChE,EAAE,EAAE,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChD,IAAI,EAAE,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1F,QAAQ,EAAE,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACtG,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC;SAC1D,CAAC;IACN,CAAC;IAaD,KAAK,CAAC,eAAe;QAEjB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,OAAO,CAA2B,GAAG,IAAI,CAAC,QAAQ,eAAe,CAAC,CAAC;QACvG,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAeD,KAAK,CAAC,wBAAwB,CAAC,MAAc;QACzC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,OAAO,CACvC,GAAG,IAAI,CAAC,QAAQ,uBAAuB,MAAM,EAAE,CAClD,CAAC;QACF,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAgBD,2BAA2B,CAAC,QAAkB;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAa,GAAG,IAAI,CAAC,QAAQ,WAAW,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAiBD,qBAAqB,CAAC,OAAe,EAAE,IAAiD;QACpF,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,IAAI,IAAI;YAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,OAAO,CAAe,GAAG,IAAI,CAAC,QAAQ,YAAY,OAAO,IAAI,YAAY,EAAE,CAAC,CAAC;IAC7F,CAAC;IAeD,uBAAuB,CAAC,SAAmB;QAEvC,OAAO,IAAI,CAAC,QAAQ,CAAe,GAAG,IAAI,CAAC,QAAQ,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9E,CAAC;IAeD,KAAK,CAAC,sBAAsB,CAAC,GAAW;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkB,GAAG,IAAI,CAAC,QAAQ,QAAQ,GAAG,EAAE,CAAC,CAAC;QACnF,OAAO;YACH,GAAG,OAAO;YACV,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAC/E,CAAC;IACN,CAAC;IAeD,KAAK,CAAC,6BAA6B,CAAC,WAAmB;QACnD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,OAAO,CACvC,GAAG,IAAI,CAAC,QAAQ,iBAAiB,WAAW,EAAE,CACjD,CAAC;QACF,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAKO,KAAK,CAAC,OAAO,CAAI,GAAW;QAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,OAAO,EAAE;gBACL,MAAM,EAAE,kBAAkB;aAC7B;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACzC,CAAC;IAKO,KAAK,CAAC,QAAQ,CAAI,GAAW,EAAE,IAAY;QAC/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACzC,CAAC;IAKO,qBAAqB,CAAC,gBAA0C;QACpE,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO;YACH,GAAG,gBAAgB;YACnB,GAAG;SACN,CAAC;IACN,CAAC;CACJ;AAlPD,wCAkPC"}
|
package/dist/wallet/utxo.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Transaction } from '@scure/btc-signer';
|
|
2
2
|
import { AddressType, Network } from 'bitcoin-address-validation';
|
|
3
|
-
import { UTXO } from '../esplora';
|
|
3
|
+
import { EsploraClient, UTXO } from '../esplora';
|
|
4
|
+
import { OrdinalsClient } from '../ordinal-api';
|
|
4
5
|
export type BitcoinNetworkName = Exclude<Network, 'regtest'>;
|
|
5
6
|
export declare const getBtcNetwork: (name: BitcoinNetworkName) => {
|
|
6
7
|
bech32: string;
|
|
@@ -8,6 +9,7 @@ export declare const getBtcNetwork: (name: BitcoinNetworkName) => {
|
|
|
8
9
|
scriptHash: number;
|
|
9
10
|
wif: number;
|
|
10
11
|
};
|
|
12
|
+
export declare const findSafeUtxos: (utxos: UTXO[], cardinalOutputsSet: Set<string>, esploraClient: EsploraClient, ordinalsClient: OrdinalsClient) => Promise<UTXO[]>;
|
|
11
13
|
export interface Input {
|
|
12
14
|
txid: string;
|
|
13
15
|
index: number;
|
package/dist/wallet/utxo.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getBtcNetwork = void 0;
|
|
3
|
+
exports.findSafeUtxos = exports.getBtcNetwork = void 0;
|
|
4
4
|
exports.createBitcoinPsbt = createBitcoinPsbt;
|
|
5
5
|
exports.getInputFromUtxoAndTx = getInputFromUtxoAndTx;
|
|
6
6
|
exports.estimateTxFee = estimateTxFee;
|
|
@@ -10,6 +10,7 @@ const base_1 = require("@scure/base");
|
|
|
10
10
|
const bitcoin_address_validation_1 = require("bitcoin-address-validation");
|
|
11
11
|
const esplora_1 = require("../esplora");
|
|
12
12
|
const ordinal_api_1 = require("../ordinal-api");
|
|
13
|
+
const inscription_1 = require("../inscription");
|
|
13
14
|
const bitcoinNetworks = {
|
|
14
15
|
mainnet: btc_signer_1.NETWORK,
|
|
15
16
|
testnet: btc_signer_1.TEST_NETWORK,
|
|
@@ -18,6 +19,63 @@ const getBtcNetwork = (name) => {
|
|
|
18
19
|
return bitcoinNetworks[name];
|
|
19
20
|
};
|
|
20
21
|
exports.getBtcNetwork = getBtcNetwork;
|
|
22
|
+
const isCardinalOutput = (output) => output.inscriptions.length === 0 && Object.keys(output.runes).length === 0;
|
|
23
|
+
const isCardinalTx = async (outpoint, cardinalOutputsSet, esploraClient, ordinalsClient) => {
|
|
24
|
+
const transaction = await esploraClient.getTransaction(outpoint.txid);
|
|
25
|
+
if (transaction.status.confirmed)
|
|
26
|
+
return cardinalOutputsSet.has(ordinal_api_1.OutPoint.toString(outpoint));
|
|
27
|
+
const outputs = await ordinalsClient.getOutputsFromOutPoints(transaction.vin.map(ordinal_api_1.OutPoint.toString));
|
|
28
|
+
const results = await Promise.all(transaction.vin.map(async (vin, index) => {
|
|
29
|
+
if (cardinalOutputsSet.has(ordinal_api_1.OutPoint.toString(vin)))
|
|
30
|
+
return true;
|
|
31
|
+
const inscriptions = await (0, inscription_1.getTxInscriptions)(esploraClient, vin.txid);
|
|
32
|
+
if (inscriptions.length > 0)
|
|
33
|
+
return false;
|
|
34
|
+
const output = outputs[index];
|
|
35
|
+
if (output.indexed) {
|
|
36
|
+
return isCardinalOutput(output);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return isCardinalTx(vin, cardinalOutputsSet, esploraClient, ordinalsClient);
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
42
|
+
return results.every((result) => result === true);
|
|
43
|
+
};
|
|
44
|
+
const findSafeUtxos = async (utxos, cardinalOutputsSet, esploraClient, ordinalsClient) => {
|
|
45
|
+
const results = await Promise.all(utxos.map(async (utxo) => {
|
|
46
|
+
if (cardinalOutputsSet.has(ordinal_api_1.OutPoint.toString(utxo)))
|
|
47
|
+
return true;
|
|
48
|
+
const inscriptions = await (0, inscription_1.getTxInscriptions)(esploraClient, utxo.txid);
|
|
49
|
+
if (inscriptions.length > 0)
|
|
50
|
+
return false;
|
|
51
|
+
return isCardinalTx(utxo, cardinalOutputsSet, esploraClient, ordinalsClient);
|
|
52
|
+
}));
|
|
53
|
+
return utxos.filter((_, index) => results[index]);
|
|
54
|
+
};
|
|
55
|
+
exports.findSafeUtxos = findSafeUtxos;
|
|
56
|
+
const getSafeUtxos = async (address, esploraClient, ordinalsClient) => {
|
|
57
|
+
const [utxos, cardinalOutputs] = await Promise.all([
|
|
58
|
+
esploraClient.getAddressUtxos(address),
|
|
59
|
+
ordinalsClient.getOutputsFromAddress(address, 'cardinal'),
|
|
60
|
+
]);
|
|
61
|
+
const cardinalOutputsSet = new Set(cardinalOutputs.map((output) => output.outpoint));
|
|
62
|
+
return (0, exports.findSafeUtxos)(utxos, cardinalOutputsSet, esploraClient, ordinalsClient);
|
|
63
|
+
};
|
|
64
|
+
const collectPossibleInputs = async (fromAddress, publicKey) => {
|
|
65
|
+
const addressInfo = (0, bitcoin_address_validation_1.getAddressInfo)(fromAddress);
|
|
66
|
+
const esploraClient = new esplora_1.EsploraClient(addressInfo.network);
|
|
67
|
+
const ordinalsClient = new ordinal_api_1.OrdinalsClient(addressInfo.network);
|
|
68
|
+
const safeUtxos = await getSafeUtxos(fromAddress, esploraClient, ordinalsClient);
|
|
69
|
+
if (safeUtxos.length === 0) {
|
|
70
|
+
throw new Error('No confirmed UTXOs');
|
|
71
|
+
}
|
|
72
|
+
return Promise.all(safeUtxos.map(async (utxo) => {
|
|
73
|
+
const hex = await esploraClient.getTransactionHex(utxo.txid);
|
|
74
|
+
const transaction = btc_signer_1.Transaction.fromRaw(Buffer.from(hex, 'hex'), { allowUnknownOutputs: true });
|
|
75
|
+
const input = getInputFromUtxoAndTx(addressInfo.network, utxo, transaction, addressInfo.type, publicKey);
|
|
76
|
+
return input;
|
|
77
|
+
}));
|
|
78
|
+
};
|
|
21
79
|
async function createBitcoinPsbt(fromAddress, toAddress, amount, publicKey, opReturnData, feeRate, confirmationTarget = 3) {
|
|
22
80
|
const addressInfo = (0, bitcoin_address_validation_1.getAddressInfo)(fromAddress);
|
|
23
81
|
const utxoSelectionStrategy = 'default';
|
|
@@ -31,27 +89,12 @@ async function createBitcoinPsbt(fromAddress, toAddress, amount, publicKey, opRe
|
|
|
31
89
|
throw new Error('Public key is required to spend from the selected address type');
|
|
32
90
|
}
|
|
33
91
|
}
|
|
92
|
+
let possibleInputs = [];
|
|
34
93
|
const esploraClient = new esplora_1.EsploraClient(addressInfo.network);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
let outputsFromAddress = [];
|
|
38
|
-
[confirmedUtxos, feeRate, outputsFromAddress] = await Promise.all([
|
|
39
|
-
esploraClient.getAddressUtxos(fromAddress),
|
|
94
|
+
[possibleInputs, feeRate] = await Promise.all([
|
|
95
|
+
collectPossibleInputs(fromAddress, publicKey),
|
|
40
96
|
feeRate === undefined ? esploraClient.getFeeEstimate(confirmationTarget) : feeRate,
|
|
41
|
-
ordinalsClient.getOutputsFromAddress(fromAddress, 'cardinal'),
|
|
42
97
|
]);
|
|
43
|
-
if (confirmedUtxos.length === 0) {
|
|
44
|
-
throw new Error('No confirmed UTXOs');
|
|
45
|
-
}
|
|
46
|
-
const outpointsSet = new Set(outputsFromAddress.map((output) => output.outpoint));
|
|
47
|
-
const possibleInputs = [];
|
|
48
|
-
await Promise.all(confirmedUtxos.map(async (utxo) => {
|
|
49
|
-
const hex = await esploraClient.getTransactionHex(utxo.txid);
|
|
50
|
-
const transaction = btc_signer_1.Transaction.fromRaw(Buffer.from(hex, 'hex'), { allowUnknownOutputs: true });
|
|
51
|
-
const input = getInputFromUtxoAndTx(addressInfo.network, utxo, transaction, addressInfo.type, publicKey);
|
|
52
|
-
if (outpointsSet.has(ordinal_api_1.OutPoint.toString(utxo)))
|
|
53
|
-
possibleInputs.push(input);
|
|
54
|
-
}));
|
|
55
98
|
const outputs = [
|
|
56
99
|
{
|
|
57
100
|
address: toAddress,
|
|
@@ -78,8 +121,7 @@ async function createBitcoinPsbt(fromAddress, toAddress, amount, publicKey, opRe
|
|
|
78
121
|
dust: BigInt(546),
|
|
79
122
|
});
|
|
80
123
|
if (!transaction || !transaction.tx) {
|
|
81
|
-
console.debug('
|
|
82
|
-
console.debug('outputsFromAddress', outputsFromAddress);
|
|
124
|
+
console.debug('possibleInputs', possibleInputs);
|
|
83
125
|
console.debug(`fromAddress: ${fromAddress}, toAddress: ${toAddress}, amount: ${amount}`);
|
|
84
126
|
console.debug(`publicKey: ${publicKey}, opReturnData: ${opReturnData}`);
|
|
85
127
|
console.debug(`feeRate: ${feeRate}, confirmationTarget: ${confirmationTarget}`);
|
|
@@ -135,27 +177,12 @@ async function estimateTxFee(fromAddress, amount, publicKey, opReturnData, feeRa
|
|
|
135
177
|
}
|
|
136
178
|
}
|
|
137
179
|
const toAddress = fromAddress;
|
|
180
|
+
let possibleInputs = [];
|
|
138
181
|
const esploraClient = new esplora_1.EsploraClient(addressInfo.network);
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
let outputsFromAddress = [];
|
|
142
|
-
[confirmedUtxos, feeRate, outputsFromAddress] = await Promise.all([
|
|
143
|
-
esploraClient.getAddressUtxos(fromAddress),
|
|
182
|
+
[possibleInputs, feeRate] = await Promise.all([
|
|
183
|
+
collectPossibleInputs(fromAddress, publicKey),
|
|
144
184
|
feeRate === undefined ? esploraClient.getFeeEstimate(confirmationTarget) : feeRate,
|
|
145
|
-
ordinalsClient.getOutputsFromAddress(fromAddress, 'cardinal'),
|
|
146
185
|
]);
|
|
147
|
-
if (confirmedUtxos.length === 0) {
|
|
148
|
-
throw new Error('No confirmed UTXOs');
|
|
149
|
-
}
|
|
150
|
-
const outpointsSet = new Set(outputsFromAddress.map((output) => output.outpoint));
|
|
151
|
-
const possibleInputs = [];
|
|
152
|
-
await Promise.all(confirmedUtxos.map(async (utxo) => {
|
|
153
|
-
const hex = await esploraClient.getTransactionHex(utxo.txid);
|
|
154
|
-
const transaction = btc_signer_1.Transaction.fromRaw(Buffer.from(hex, 'hex'), { allowUnknownOutputs: true });
|
|
155
|
-
const input = getInputFromUtxoAndTx(addressInfo.network, utxo, transaction, addressInfo.type, publicKey);
|
|
156
|
-
if (outpointsSet.has(ordinal_api_1.OutPoint.toString(utxo)))
|
|
157
|
-
possibleInputs.push(input);
|
|
158
|
-
}));
|
|
159
186
|
const outputs = [
|
|
160
187
|
{
|
|
161
188
|
address: toAddress,
|
|
@@ -186,8 +213,7 @@ async function estimateTxFee(fromAddress, amount, publicKey, opReturnData, feeRa
|
|
|
186
213
|
dust: BigInt(546),
|
|
187
214
|
});
|
|
188
215
|
if (!transaction || !transaction.tx) {
|
|
189
|
-
console.debug('
|
|
190
|
-
console.debug('outputsFromAddress', outputsFromAddress);
|
|
216
|
+
console.debug('possibleInputs', possibleInputs);
|
|
191
217
|
console.debug(`fromAddress: ${fromAddress}, amount: ${amount}`);
|
|
192
218
|
console.debug(`publicKey: ${publicKey}, opReturnData: ${opReturnData}`);
|
|
193
219
|
console.debug(`feeRate: ${feeRate}, confirmationTarget: ${confirmationTarget}`);
|
|
@@ -202,20 +228,11 @@ async function getBalance(address) {
|
|
|
202
228
|
const addressInfo = (0, bitcoin_address_validation_1.getAddressInfo)(address);
|
|
203
229
|
const esploraClient = new esplora_1.EsploraClient(addressInfo.network);
|
|
204
230
|
const ordinalsClient = new ordinal_api_1.OrdinalsClient(addressInfo.network);
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
const total = outputs.reduce((acc, output) => {
|
|
211
|
-
if (cardinalOutputsSet.has(ordinal_api_1.OutPoint.toString(output))) {
|
|
212
|
-
return acc + output.value;
|
|
213
|
-
}
|
|
214
|
-
return acc;
|
|
215
|
-
}, 0);
|
|
216
|
-
const confirmed = outputs.reduce((acc, output) => {
|
|
217
|
-
if (cardinalOutputsSet.has(ordinal_api_1.OutPoint.toString(output)) && output.confirmed) {
|
|
218
|
-
return acc + output.value;
|
|
231
|
+
const safeUtxos = await getSafeUtxos(address, esploraClient, ordinalsClient);
|
|
232
|
+
const total = safeUtxos.reduce((acc, utxo) => acc + utxo.value, 0);
|
|
233
|
+
const confirmed = safeUtxos.reduce((acc, utxo) => {
|
|
234
|
+
if (utxo.confirmed) {
|
|
235
|
+
return acc + utxo.value;
|
|
219
236
|
}
|
|
220
237
|
return acc;
|
|
221
238
|
}, 0);
|
package/dist/wallet/utxo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../src/wallet/utxo.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../src/wallet/utxo.ts"],"names":[],"mappings":"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"}
|