ecash-agora 0.1.1-rc

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/agora.js ADDED
@@ -0,0 +1,432 @@
1
+ // Copyright (c) 2024 The Bitcoin developers
2
+ // Distributed under the MIT software license, see the accompanying
3
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
+ import { alpSend, Bytes, DEFAULT_DUST_LIMIT, DEFAULT_FEE_PER_KB, EccDummy, emppScript, fromHex, readTxOutput, Script, shaRmd160, slpSend, strToBytes, toHex, TxBuilder, } from 'ecash-lib';
5
+ import { AgoraOneshot, AgoraOneshotCancelSignatory, AgoraOneshotSignatory, } from './oneshot.js';
6
+ import { AgoraPartial, AgoraPartialCancelSignatory, AgoraPartialSignatory, } from './partial.js';
7
+ const TOKEN_ID_PREFIX = toHex(strToBytes('T'));
8
+ const PUBKEY_PREFIX = toHex(strToBytes('P'));
9
+ const FUNGIBLE_TOKEN_ID_PREFIX = toHex(strToBytes('F'));
10
+ const GROUP_TOKEN_ID_PREFIX = toHex(strToBytes('G'));
11
+ const PLUGIN_NAME = 'agora';
12
+ const ONESHOT_HEX = toHex(strToBytes(AgoraOneshot.COVENANT_VARIANT));
13
+ const PARTIAL_HEX = toHex(strToBytes(AgoraPartial.COVENANT_VARIANT));
14
+ const PLUGIN_GROUPS_MAX_PAGE_SIZE = 50;
15
+ /**
16
+ * Individual token offer on the Agora, i.e. one UTXO offering tokens.
17
+ *
18
+ * It can be used to accept or cancel the offer.
19
+ */
20
+ export class AgoraOffer {
21
+ constructor(params) {
22
+ this.variant = params.variant;
23
+ this.outpoint = params.outpoint;
24
+ this.txBuilderInput = params.txBuilderInput;
25
+ this.token = params.token;
26
+ }
27
+ /**
28
+ * Build a tx accepting this offer.
29
+ *
30
+ * Agora offers are UTXOs on the blockchain that can be accepted by anyone
31
+ * sending sufficient satoshis to a required output.
32
+ *
33
+ * `fuelInputs` has to provide enough sats for this offer to cover ask + tx fee.
34
+ * */
35
+ acceptTx(params) {
36
+ const dustAmount = params.dustAmount ?? DEFAULT_DUST_LIMIT;
37
+ const feePerKb = params.feePerKb ?? DEFAULT_FEE_PER_KB;
38
+ const txBuild = this._acceptTxBuilder({
39
+ covenantSk: params.covenantSk,
40
+ covenantPk: params.covenantPk,
41
+ fuelInputs: params.fuelInputs,
42
+ extraOutputs: [
43
+ {
44
+ value: dustAmount,
45
+ script: params.recipientScript,
46
+ },
47
+ params.recipientScript,
48
+ ],
49
+ acceptedTokens: params.acceptedTokens,
50
+ });
51
+ return txBuild.sign(params.ecc, feePerKb, dustAmount);
52
+ }
53
+ /**
54
+ * How many extra satoshis are required to fuel this offer so it can be
55
+ * broadcast on the network, excluding the asked sats.
56
+ * This should be displayed to the user as network fee.
57
+ * The total required input amount is askedSats + acceptFeeSats.
58
+ **/
59
+ acceptFeeSats(params) {
60
+ const feePerKb = params.feePerKb ?? DEFAULT_FEE_PER_KB;
61
+ const txBuild = this._acceptTxBuilder({
62
+ covenantSk: new Uint8Array(32),
63
+ covenantPk: new Uint8Array(33),
64
+ fuelInputs: params.extraInputs ?? [],
65
+ extraOutputs: [
66
+ {
67
+ value: 0,
68
+ script: params.recipientScript,
69
+ },
70
+ ],
71
+ acceptedTokens: params.acceptedTokens,
72
+ });
73
+ const measureTx = txBuild.sign(new EccDummy());
74
+ return BigInt(Math.ceil((measureTx.serSize() * feePerKb) / 1000));
75
+ }
76
+ _acceptTxBuilder(params) {
77
+ switch (this.variant.type) {
78
+ case 'ONESHOT':
79
+ return new TxBuilder({
80
+ inputs: [
81
+ ...params.fuelInputs,
82
+ {
83
+ input: this.txBuilderInput,
84
+ signatory: AgoraOneshotSignatory(params.covenantSk, params.covenantPk, this.variant.params.enforcedOutputs.length),
85
+ },
86
+ ],
87
+ outputs: [
88
+ ...this.variant.params.enforcedOutputs,
89
+ ...params.extraOutputs,
90
+ ],
91
+ });
92
+ case 'PARTIAL':
93
+ if (params.acceptedTokens === undefined) {
94
+ throw new Error('Must set acceptedTokens for partial offers');
95
+ }
96
+ const txBuild = new TxBuilder();
97
+ const agoraPartial = this.variant.params;
98
+ const truncFactor = 1n << BigInt(8 * agoraPartial.numTokenTruncBytes);
99
+ if (params.acceptedTokens % truncFactor != 0n) {
100
+ throw new Error(`Must acceptedTokens must be a multiple of ${truncFactor}`);
101
+ }
102
+ txBuild.inputs.push({
103
+ input: this.txBuilderInput,
104
+ signatory: AgoraPartialSignatory(agoraPartial, params.acceptedTokens / truncFactor, params.covenantSk, params.covenantPk),
105
+ });
106
+ txBuild.inputs.push(...params.fuelInputs);
107
+ const sendAmounts = [0];
108
+ const offeredTokens = BigInt(this.token.amount);
109
+ if (offeredTokens > params.acceptedTokens) {
110
+ sendAmounts.push(offeredTokens - params.acceptedTokens);
111
+ }
112
+ sendAmounts.push(params.acceptedTokens);
113
+ if (agoraPartial.tokenProtocol == 'SLP') {
114
+ txBuild.outputs.push({
115
+ value: 0,
116
+ script: slpSend(this.token.tokenId, this.token.tokenType.number, sendAmounts),
117
+ });
118
+ }
119
+ else if (agoraPartial.tokenProtocol == 'ALP') {
120
+ txBuild.outputs.push({
121
+ value: 0,
122
+ script: emppScript([
123
+ agoraPartial.adPushdata(),
124
+ alpSend(this.token.tokenId, this.token.tokenType.number, sendAmounts),
125
+ ]),
126
+ });
127
+ }
128
+ else {
129
+ throw new Error('Not implemented');
130
+ }
131
+ txBuild.outputs.push({
132
+ value: agoraPartial.askedSats(params.acceptedTokens),
133
+ script: Script.p2pkh(shaRmd160(agoraPartial.makerPk)),
134
+ });
135
+ if (offeredTokens > params.acceptedTokens) {
136
+ const newAgoraPartial = new AgoraPartial({
137
+ ...agoraPartial,
138
+ truncTokens: (offeredTokens - params.acceptedTokens) /
139
+ truncFactor,
140
+ });
141
+ txBuild.outputs.push({
142
+ value: agoraPartial.dustAmount,
143
+ script: Script.p2sh(shaRmd160(newAgoraPartial.script().bytecode)),
144
+ });
145
+ }
146
+ txBuild.outputs.push(...params.extraOutputs);
147
+ return txBuild;
148
+ default:
149
+ throw new Error('Not implemented');
150
+ }
151
+ }
152
+ /**
153
+ * Build a tx canceling the offer.
154
+ *
155
+ * An offer can only be cancelled using the secret key that created it.
156
+ *
157
+ * `fuelInputs` must cover the tx fee, you can calculate it with cancelFeeSats.
158
+ **/
159
+ cancelTx(params) {
160
+ const dustAmount = params.dustAmount ?? DEFAULT_DUST_LIMIT;
161
+ const feePerKb = params.feePerKb ?? DEFAULT_FEE_PER_KB;
162
+ const txBuild = this._cancelTxBuilder({
163
+ cancelSk: params.cancelSk,
164
+ fuelInputs: params.fuelInputs,
165
+ extraOutputs: [
166
+ {
167
+ value: dustAmount,
168
+ script: params.recipientScript,
169
+ },
170
+ params.recipientScript,
171
+ ],
172
+ });
173
+ return txBuild.sign(params.ecc, feePerKb, dustAmount);
174
+ }
175
+ /**
176
+ * How many extra satoshis are required to fuel cancelling this offer,
177
+ * so the cancel tx can be broadcast on the network, excluding the asked
178
+ * sats and a dust amount to receive the tokens.
179
+ *
180
+ * extraInputs can be used to add an ad input so we have the correct
181
+ * estimate in case of a cancel + reoffer.
182
+ *
183
+ * This should be displayed to the user as cancellation network fee.
184
+ * The total required sats input amount is returned by this function.
185
+ **/
186
+ cancelFeeSats(params) {
187
+ const feePerKb = params.feePerKb ?? DEFAULT_FEE_PER_KB;
188
+ const txBuild = this._cancelTxBuilder({
189
+ cancelSk: new Uint8Array(32),
190
+ fuelInputs: params.extraInputs ?? [],
191
+ extraOutputs: [
192
+ {
193
+ value: 0,
194
+ script: params.recipientScript,
195
+ },
196
+ ],
197
+ });
198
+ const measureTx = txBuild.sign(new EccDummy());
199
+ return BigInt(Math.ceil((measureTx.serSize() * feePerKb) / 1000));
200
+ }
201
+ _cancelTxBuilder(params) {
202
+ let signatory;
203
+ let tokenProtocol;
204
+ switch (this.variant.type) {
205
+ case 'ONESHOT':
206
+ signatory = AgoraOneshotCancelSignatory(params.cancelSk);
207
+ tokenProtocol = 'SLP';
208
+ break;
209
+ case 'PARTIAL':
210
+ tokenProtocol = this.variant.params.tokenProtocol;
211
+ signatory = AgoraPartialCancelSignatory(params.cancelSk, tokenProtocol);
212
+ break;
213
+ default:
214
+ throw new Error('Not implemented');
215
+ }
216
+ const outputs = [];
217
+ switch (tokenProtocol) {
218
+ case 'SLP':
219
+ outputs.push({
220
+ value: 0,
221
+ script: slpSend(this.token.tokenId, this.token.tokenType.number, [BigInt(this.token.amount)]),
222
+ });
223
+ break;
224
+ case 'ALP':
225
+ outputs.push({
226
+ value: 0,
227
+ script: emppScript([
228
+ alpSend(this.token.tokenId, this.token.tokenType.number, [BigInt(this.token.amount)]),
229
+ ]),
230
+ });
231
+ break;
232
+ }
233
+ outputs.push(...params.extraOutputs);
234
+ return new TxBuilder({
235
+ inputs: [
236
+ ...params.fuelInputs,
237
+ {
238
+ input: this.txBuilderInput,
239
+ signatory,
240
+ },
241
+ ],
242
+ outputs,
243
+ });
244
+ }
245
+ /**
246
+ * How many satoshis are asked to accept this offer, excluding tx fees.
247
+ * This is what should be displayed to the user as the price.
248
+ **/
249
+ askedSats(acceptedTokens) {
250
+ switch (this.variant.type) {
251
+ case 'ONESHOT':
252
+ return this.variant.params.askedSats();
253
+ case 'PARTIAL':
254
+ if (acceptedTokens === undefined) {
255
+ throw new Error('Must provide acceptedTokens for PARTIAL offers');
256
+ }
257
+ return this.variant.params.askedSats(acceptedTokens);
258
+ default:
259
+ throw new Error('Not implemented');
260
+ }
261
+ }
262
+ }
263
+ /**
264
+ * Enables access to Agora, via Chronik instances that have the "agora" plugin
265
+ * loaded.
266
+ *
267
+ * See agora.py.
268
+ **/
269
+ export class Agora {
270
+ /**
271
+ * Create an Agora instance. The provided Chronik instance must have the
272
+ * "agora" plugin loaded.
273
+ **/
274
+ constructor(chronik, dustAmount) {
275
+ this.plugin = chronik.plugin(PLUGIN_NAME);
276
+ this.dustAmount = dustAmount ?? DEFAULT_DUST_LIMIT;
277
+ }
278
+ /**
279
+ * Query all the token IDs, fungible and non-fungible ones, that have active
280
+ * Agora offers.
281
+ **/
282
+ async allOfferedTokenIds() {
283
+ return await this._allTokenIdsByPrefix(TOKEN_ID_PREFIX);
284
+ }
285
+ /** Query all fungible token IDs that have active Agora offers. */
286
+ async offeredFungibleTokenIds() {
287
+ return await this._allTokenIdsByPrefix(FUNGIBLE_TOKEN_ID_PREFIX);
288
+ }
289
+ /**
290
+ * Query all token IDs of groups of non-fungible tokens that have active
291
+ * Agora offers.
292
+ **/
293
+ async offeredGroupTokenIds() {
294
+ return await this._allTokenIdsByPrefix(GROUP_TOKEN_ID_PREFIX);
295
+ }
296
+ /** Query all active offers by token ID. */
297
+ async activeOffersByTokenId(tokenId) {
298
+ return await this._activeOffersByGroup(TOKEN_ID_PREFIX + tokenId);
299
+ }
300
+ /** Query all active offers by group token ID. */
301
+ async activeOffersByGroupTokenId(groupTokenId) {
302
+ return await this._activeOffersByGroup(GROUP_TOKEN_ID_PREFIX + groupTokenId);
303
+ }
304
+ /** Query all active offers with the given cancel pubkey. */
305
+ async activeOffersByPubKey(pubkeyHex) {
306
+ return await this._activeOffersByGroup(PUBKEY_PREFIX + pubkeyHex);
307
+ }
308
+ async _allTokenIdsByPrefix(prefixHex) {
309
+ let tokenIds = [];
310
+ let nextStart = undefined;
311
+ while (nextStart !== '') {
312
+ const groups = await this.plugin.groups(prefixHex, nextStart, PLUGIN_GROUPS_MAX_PAGE_SIZE);
313
+ tokenIds.push(...groups.groups.map(({ group }) => group.substring(prefixHex.length)));
314
+ nextStart = groups.nextStart;
315
+ }
316
+ return tokenIds;
317
+ }
318
+ async _activeOffersByGroup(groupHex) {
319
+ const utxos = await this.plugin.utxos(groupHex);
320
+ return utxos.utxos.flatMap(utxo => {
321
+ const offer = this._parseOfferUtxo(utxo);
322
+ return offer ? [offer] : [];
323
+ });
324
+ }
325
+ _parseOfferUtxo(utxo) {
326
+ if (utxo.plugins === undefined) {
327
+ return undefined;
328
+ }
329
+ const plugin = utxo.plugins[PLUGIN_NAME];
330
+ if (plugin === undefined) {
331
+ return undefined;
332
+ }
333
+ const covenantVariant = plugin.data[0];
334
+ switch (covenantVariant) {
335
+ case ONESHOT_HEX:
336
+ return this._parseOneshotOfferUtxo(utxo, plugin);
337
+ case PARTIAL_HEX:
338
+ return this._parsePartialOfferUtxo(utxo, plugin);
339
+ default:
340
+ return undefined;
341
+ }
342
+ }
343
+ _parseOneshotOfferUtxo(utxo, plugin) {
344
+ if (utxo.token?.tokenType.protocol !== 'SLP') {
345
+ // Currently only SLP supported
346
+ return undefined;
347
+ }
348
+ const outputsSerHex = plugin.data[1];
349
+ const outputsSerBytes = new Bytes(fromHex(outputsSerHex));
350
+ const enforcedOutputs = [
351
+ {
352
+ value: BigInt(0),
353
+ script: slpSend(utxo.token.tokenId, utxo.token.tokenType.number, [0, BigInt(utxo.token.amount)]),
354
+ },
355
+ ];
356
+ while (outputsSerBytes.data.length > outputsSerBytes.idx) {
357
+ enforcedOutputs.push(readTxOutput(outputsSerBytes));
358
+ }
359
+ const cancelPkGroupHex = plugin.groups.find(group => group.startsWith(PUBKEY_PREFIX));
360
+ if (cancelPkGroupHex === undefined) {
361
+ return undefined;
362
+ }
363
+ const cancelPk = fromHex(cancelPkGroupHex.substring(PUBKEY_PREFIX.length));
364
+ const agoraOneshot = new AgoraOneshot({
365
+ enforcedOutputs,
366
+ cancelPk,
367
+ });
368
+ return new AgoraOffer({
369
+ variant: {
370
+ type: 'ONESHOT',
371
+ params: agoraOneshot,
372
+ },
373
+ outpoint: utxo.outpoint,
374
+ txBuilderInput: {
375
+ prevOut: utxo.outpoint,
376
+ signData: {
377
+ value: utxo.value,
378
+ redeemScript: agoraOneshot.script(),
379
+ },
380
+ },
381
+ token: utxo.token,
382
+ });
383
+ }
384
+ _parsePartialOfferUtxo(utxo, plugin) {
385
+ if (utxo.token === undefined) {
386
+ return undefined;
387
+ }
388
+ // Plugin gives us the offer data in this form
389
+ const [_, numTokenTruncBytesHex, numSatsTruncBytesHex, tokenScaleFactorHex, scaledTruncTokensPerTruncSatHex, minAcceptedScaledTruncTokensHex,] = plugin.data;
390
+ const numTokenTruncBytes = fromHex(numTokenTruncBytesHex)[0];
391
+ const numSatsTruncBytes = fromHex(numSatsTruncBytesHex)[0];
392
+ const tokenScaleFactor = new Bytes(fromHex(tokenScaleFactorHex)).readU64();
393
+ const scaledTruncTokensPerTruncSat = new Bytes(fromHex(scaledTruncTokensPerTruncSatHex)).readU64();
394
+ const minAcceptedScaledTruncTokens = new Bytes(fromHex(minAcceptedScaledTruncTokensHex)).readU64();
395
+ const makerPkGroupHex = plugin.groups.find(group => group.startsWith(PUBKEY_PREFIX));
396
+ if (makerPkGroupHex === undefined) {
397
+ return undefined;
398
+ }
399
+ const makerPk = fromHex(makerPkGroupHex.substring(PUBKEY_PREFIX.length));
400
+ const agoraPartial = new AgoraPartial({
401
+ truncTokens: BigInt(utxo.token.amount) >> (8n * BigInt(numTokenTruncBytes)),
402
+ numTokenTruncBytes,
403
+ tokenScaleFactor,
404
+ scaledTruncTokensPerTruncSat,
405
+ numSatsTruncBytes,
406
+ makerPk,
407
+ minAcceptedScaledTruncTokens,
408
+ tokenId: utxo.token.tokenId,
409
+ tokenType: utxo.token.tokenType.number,
410
+ tokenProtocol: utxo.token.tokenType.protocol,
411
+ scriptLen: 0x7f,
412
+ dustAmount: this.dustAmount,
413
+ });
414
+ agoraPartial.updateScriptLen();
415
+ return new AgoraOffer({
416
+ variant: {
417
+ type: 'PARTIAL',
418
+ params: agoraPartial,
419
+ },
420
+ outpoint: utxo.outpoint,
421
+ txBuilderInput: {
422
+ prevOut: utxo.outpoint,
423
+ signData: {
424
+ value: utxo.value,
425
+ redeemScript: agoraPartial.script(),
426
+ },
427
+ },
428
+ token: utxo.token,
429
+ });
430
+ }
431
+ }
432
+ //# sourceMappingURL=agora.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agora.js","sourceRoot":"","sources":["../src/agora.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Agora LOKAD ID */
2
+ export declare const AGORA_LOKAD_ID_STR = "AGR0";
3
+ /** Agora LOKAD ID */
4
+ export declare const AGORA_LOKAD_ID: Uint8Array;
5
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAMA,qBAAqB;AACrB,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,qBAAqB;AACrB,eAAO,MAAM,cAAc,YAAiC,CAAC"}
package/dist/consts.js ADDED
@@ -0,0 +1,9 @@
1
+ // Copyright (c) 2024 The Bitcoin developers
2
+ // Distributed under the MIT software license, see the accompanying
3
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
+ import { strToBytes } from 'ecash-lib';
5
+ /** Agora LOKAD ID */
6
+ export const AGORA_LOKAD_ID_STR = 'AGR0';
7
+ /** Agora LOKAD ID */
8
+ export const AGORA_LOKAD_ID = strToBytes(AGORA_LOKAD_ID_STR);
9
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAqB;AACrB,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './ad.js';
2
+ export * from './agora.js';
3
+ export * from './consts.js';
4
+ export * from './oneshot.js';
5
+ export * from './partial.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ // Copyright (c) 2024 The Bitcoin developers
2
+ // Distributed under the MIT software license, see the accompanying
3
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
+ export * from './ad.js';
5
+ export * from './agora.js';
6
+ export * from './consts.js';
7
+ export * from './oneshot.js';
8
+ export * from './partial.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;AAEtE,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Ecc, Script, TxOutput, UnsignedTxInput } from 'ecash-lib';
2
+ /**
3
+ * Agora offer that has to be accepted in "one shot", i.e. all or nothing.
4
+ * This is useful for offers that offer exactly 1 token, especially NFTs.
5
+ *
6
+ * The covenant is reasonably simple, see
7
+ * https://read.cash/@pein/bch-covenants-with-spedn-4a980ed3 for an explanation of the
8
+ * covenant mechanism, but uses two optimizations:
9
+ * 1. It uses ANYONECANPAY as sighash for the "accept" path, which makes the sighash
10
+ * preimage start with `1000....00000`, which can be created with
11
+ * `OP_1 68 OP_NUM2BIN`, saving around 64 bytes.
12
+ * 2. It uses OP_CODESEPARATOR before the OP_CHECKSIG, which cuts out the entire script
13
+ * code, leaving only the OP_CHECKSIG behind. The scriptCode part in the BIP143
14
+ * sighash now just becomes `01ac`, which is both easier to deal with in the OP_SPLIT
15
+ * and also saves 100 bytes or so (depending on the enforced outputs).
16
+ **/
17
+ export declare class AgoraOneshot {
18
+ static COVENANT_VARIANT: string;
19
+ enforcedOutputs: TxOutput[];
20
+ cancelPk: Uint8Array;
21
+ constructor({ enforcedOutputs, cancelPk, }: {
22
+ enforcedOutputs: TxOutput[];
23
+ cancelPk: Uint8Array;
24
+ });
25
+ /** Build the Script enforcing the Agora offer covenant. */
26
+ script(): Script;
27
+ static fromRedeemScript(redeemScript: Script, opreturnScript: Script): AgoraOneshot;
28
+ adScript(): Script;
29
+ askedSats(): bigint;
30
+ }
31
+ export declare const AgoraOneshotSignatory: (covenantSk: Uint8Array, covenantPk: Uint8Array, numEnforcedOutputs: number) => (ecc: Ecc, input: UnsignedTxInput) => Script;
32
+ export declare const AgoraOneshotCancelSignatory: (cancelSk: Uint8Array) => (ecc: Ecc, input: UnsignedTxInput) => Script;
33
+ export declare const AgoraOneshotAdSignatory: (cancelSk: Uint8Array) => (ecc: Ecc, input: UnsignedTxInput) => Script;
34
+ //# sourceMappingURL=oneshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneshot.d.ts","sourceRoot":"","sources":["../src/oneshot.ts"],"names":[],"mappings":"AAIA,OAAO,EAIH,GAAG,EAwBH,MAAM,EACN,QAAQ,EACR,eAAe,EAWlB,MAAM,WAAW,CAAC;AAGnB;;;;;;;;;;;;;;IAcI;AACJ,qBAAa,YAAY;IACrB,OAAc,gBAAgB,SAAa;IAEpC,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,QAAQ,EAAE,UAAU,CAAC;gBAEhB,EACR,eAAe,EACf,QAAQ,GACX,EAAE;QACC,eAAe,EAAE,QAAQ,EAAE,CAAC;QAC5B,QAAQ,EAAE,UAAU,CAAC;KACxB;IAKD,2DAA2D;IACpD,MAAM,IAAI,MAAM;WAkET,gBAAgB,CAC1B,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACvB,YAAY;IA8CR,QAAQ,IAAI,MAAM;IAwBlB,SAAS,IAAI,MAAM;CAM7B;AAED,eAAO,MAAM,qBAAqB,eAClB,UAAU,cACV,UAAU,sBACF,MAAM,WAEb,GAAG,SAAS,eAAe,KAAG,MA0B9C,CAAC;AAEF,eAAO,MAAM,2BAA2B,aAAc,UAAU,WAC/C,GAAG,SAAS,eAAe,KAAG,MAa9C,CAAC;AAEF,eAAO,MAAM,uBAAuB,aAAc,UAAU,WAC3C,GAAG,SAAS,eAAe,KAAG,MAc9C,CAAC"}