@medialane/sdk 0.52.0 → 0.53.0
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/README.md +13 -27
- package/dist/index.cjs +6948 -5930
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9667 -30
- package/dist/index.d.ts +9667 -30
- package/dist/index.js +6949 -5931
- package/dist/index.js.map +1 -1
- package/package.json +4 -44
- package/dist/chains-DE8AJMIY.d.cts +0 -96
- package/dist/chains-DE8AJMIY.d.ts +0 -96
- package/dist/evm/index.cjs +0 -357
- package/dist/evm/index.cjs.map +0 -1
- package/dist/evm/index.d.cts +0 -614
- package/dist/evm/index.d.ts +0 -614
- package/dist/evm/index.js +0 -346
- package/dist/evm/index.js.map +0 -1
- package/dist/index-DkyG8aRV.d.cts +0 -8840
- package/dist/index-aEIEolh3.d.ts +0 -8840
- package/dist/solana/index.cjs +0 -253
- package/dist/solana/index.cjs.map +0 -1
- package/dist/solana/index.d.cts +0 -63
- package/dist/solana/index.d.ts +0 -63
- package/dist/solana/index.js +0 -241
- package/dist/solana/index.js.map +0 -1
- package/dist/starknet/index.cjs +0 -11203
- package/dist/starknet/index.cjs.map +0 -1
- package/dist/starknet/index.d.cts +0 -4
- package/dist/starknet/index.d.ts +0 -4
- package/dist/starknet/index.js +0 -11136
- package/dist/starknet/index.js.map +0 -1
- package/dist/stellar/index.cjs +0 -165
- package/dist/stellar/index.cjs.map +0 -1
- package/dist/stellar/index.d.cts +0 -50
- package/dist/stellar/index.d.ts +0 -50
- package/dist/stellar/index.js +0 -162
- package/dist/stellar/index.js.map +0 -1
- package/dist/types-CYu4fwq8.d.cts +0 -78
- package/dist/types-DdwylC5C.d.ts +0 -78
package/dist/stellar/index.cjs
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var stellarSdk = require('@stellar/stellar-sdk');
|
|
4
|
-
var sha2_js = require('@noble/hashes/sha2.js');
|
|
5
|
-
|
|
6
|
-
// src/stellar/venue.ts
|
|
7
|
-
|
|
8
|
-
// src/chains.ts
|
|
9
|
-
var COORDINATES = {
|
|
10
|
-
STARKNET: {
|
|
11
|
-
rpcUrl: "https://rpc.starknet.lava.build",
|
|
12
|
-
marketplace721: "0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc",
|
|
13
|
-
marketplace721ClassHash: "0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90",
|
|
14
|
-
marketplace721StartBlock: 11198146,
|
|
15
|
-
marketplace1155: "0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38",
|
|
16
|
-
marketplace1155ClassHash: "0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328",
|
|
17
|
-
marketplace1155StartBlock: 11198267,
|
|
18
|
-
collection721: "0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea",
|
|
19
|
-
collection721StartBlock: 11198496,
|
|
20
|
-
ipNftClassHash: "0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc",
|
|
21
|
-
ipCollectionClassHash: "0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4",
|
|
22
|
-
collection1155: "0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551",
|
|
23
|
-
collection1155FactoryClassHash: "0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2",
|
|
24
|
-
collection1155ClassHash: "0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78",
|
|
25
|
-
collection1155StartBlock: 11199527,
|
|
26
|
-
popFactory: "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111",
|
|
27
|
-
popCollectionClassHash: "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f",
|
|
28
|
-
dropFactory: "0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800",
|
|
29
|
-
dropCollectionClassHash: "0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282",
|
|
30
|
-
nftComments: "0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843",
|
|
31
|
-
creatorCoinFactory: "0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c",
|
|
32
|
-
creatorCoinEkuboLauncher: "0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4",
|
|
33
|
-
creatorCoinClassHash: "0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6",
|
|
34
|
-
creatorCoinFactoryClassHash: "0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55",
|
|
35
|
-
creatorCoinStartBlock: 10474544,
|
|
36
|
-
ekuboCore: "0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b",
|
|
37
|
-
ipTicketsFactory: "0x0664c2d6a4da9ee3ff053ceeba7579c01f2fedfd9d2b57b4c07af3734bd4acab",
|
|
38
|
-
ipTicketCollectionClassHash: "0x086f59c416e365e2bee4ceff9f1dcb96198f2342d50ba4621f60b831863adb6",
|
|
39
|
-
ipTicketsStartBlock: 11404656,
|
|
40
|
-
ipClubRegistry: "0x00e189c619b6bb07d78973a149641c59c37eb0716f8584d7520bce12d303eede",
|
|
41
|
-
ipClubNftClassHash: "0x02bc9b20cca21b04245e9215bf7121f4d7295b195890e449b472b573017fb889",
|
|
42
|
-
ipClubStartBlock: 11404776,
|
|
43
|
-
ipSponsorship: "0x044d9b9c3bb29b94685b0a3fe27a5e2dfa30a3637ab55979c718ebcd3268bc2f",
|
|
44
|
-
ipSponsorshipStartBlock: 11405085,
|
|
45
|
-
// Dedicated ip-erc721/MIP instance for sponsorship receipts (class hash
|
|
46
|
-
// 0x01bd7e39c5135b32b664e34cbbb4eafbd707a0fbc3ec2ef28657f52577d277d7) —
|
|
47
|
-
// never the genesis-mint instance.
|
|
48
|
-
ipSponsorshipLicense: "0x06bcfc4e97758a2abf95af4bd49596efdbfd88ccd740caddc56ad0a4bd095839"
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
function getCoordinates(chain) {
|
|
52
|
-
const c = COORDINATES[chain];
|
|
53
|
-
if (!c) throw new Error(`No coordinates configured for chain "${chain}"`);
|
|
54
|
-
return c;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// src/stellar/venue.ts
|
|
58
|
-
function stellarOrderRef(contractId, offerer, salt) {
|
|
59
|
-
const payload = new TextEncoder().encode(`${contractId}:${offerer}:${salt.toString()}`);
|
|
60
|
-
return "0x" + Buffer.from(sha2_js.sha256(payload)).toString("hex");
|
|
61
|
-
}
|
|
62
|
-
var StellarVenue = class {
|
|
63
|
-
constructor(opts) {
|
|
64
|
-
this.chain = "STELLAR";
|
|
65
|
-
this.server = opts.server;
|
|
66
|
-
this.passphrase = opts.networkPassphrase;
|
|
67
|
-
const contractId = opts.contractId ?? maybeCoords()?.marketplace;
|
|
68
|
-
if (!contractId) throw new Error("No Stellar venue contract configured");
|
|
69
|
-
this.contractId = contractId;
|
|
70
|
-
this.contract = new stellarSdk.Contract(contractId);
|
|
71
|
-
this.baseFee = opts.baseFee ?? "100";
|
|
72
|
-
}
|
|
73
|
-
async registerOrder(signer, params) {
|
|
74
|
-
const salt = BigInt(params.salt);
|
|
75
|
-
const counter = await this.getCounter(signer.publicKey);
|
|
76
|
-
const op = this.contract.call(
|
|
77
|
-
"register_order",
|
|
78
|
-
stellarSdk.nativeToScVal(signer.publicKey, { type: "address" }),
|
|
79
|
-
stellarSdk.nativeToScVal(salt, { type: "u64" }),
|
|
80
|
-
stellarSdk.nativeToScVal([params.side === "listing" ? "Listing" : "Bid"], { type: "symbol" }),
|
|
81
|
-
stellarSdk.nativeToScVal(params.asset.contract, { type: "address" }),
|
|
82
|
-
stellarSdk.nativeToScVal(Number(params.asset.tokenId), { type: "u32" }),
|
|
83
|
-
stellarSdk.nativeToScVal(params.paymentToken, { type: "address" }),
|
|
84
|
-
stellarSdk.nativeToScVal(BigInt(params.amount), { type: "i128" }),
|
|
85
|
-
stellarSdk.nativeToScVal(params.royaltyMaxBps, { type: "u32" }),
|
|
86
|
-
stellarSdk.nativeToScVal(BigInt(params.startTime), { type: "u64" }),
|
|
87
|
-
stellarSdk.nativeToScVal(BigInt(params.endTime), { type: "u64" }),
|
|
88
|
-
stellarSdk.nativeToScVal(counter, { type: "u64" })
|
|
89
|
-
);
|
|
90
|
-
const txHash = await this.invoke(signer, op);
|
|
91
|
-
return { txHash, orderRef: stellarOrderRef(this.contractId, signer.publicKey, salt) };
|
|
92
|
-
}
|
|
93
|
-
async fulfillOrder(signer, _orderRef, opts) {
|
|
94
|
-
if (!opts?.offerer || opts.salt === void 0) {
|
|
95
|
-
throw new Error("Stellar fulfillment needs { offerer, salt } (orders are storage-keyed)");
|
|
96
|
-
}
|
|
97
|
-
const op = this.contract.call(
|
|
98
|
-
"fulfill_order",
|
|
99
|
-
stellarSdk.nativeToScVal(signer.publicKey, { type: "address" }),
|
|
100
|
-
stellarSdk.nativeToScVal(opts.offerer, { type: "address" }),
|
|
101
|
-
stellarSdk.nativeToScVal(BigInt(opts.salt), { type: "u64" })
|
|
102
|
-
);
|
|
103
|
-
return { txHash: await this.invoke(signer, op) };
|
|
104
|
-
}
|
|
105
|
-
async cancelOrder(signer, _orderRef, opts) {
|
|
106
|
-
if (opts?.salt === void 0) throw new Error("Stellar cancel needs { salt }");
|
|
107
|
-
const op = this.contract.call(
|
|
108
|
-
"cancel_order",
|
|
109
|
-
stellarSdk.nativeToScVal(signer.publicKey, { type: "address" }),
|
|
110
|
-
stellarSdk.nativeToScVal(BigInt(opts.salt), { type: "u64" })
|
|
111
|
-
);
|
|
112
|
-
return { txHash: await this.invoke(signer, op) };
|
|
113
|
-
}
|
|
114
|
-
async incrementCounter(signer) {
|
|
115
|
-
const op = this.contract.call(
|
|
116
|
-
"increment_counter",
|
|
117
|
-
stellarSdk.nativeToScVal(signer.publicKey, { type: "address" })
|
|
118
|
-
);
|
|
119
|
-
return { txHash: await this.invoke(signer, op) };
|
|
120
|
-
}
|
|
121
|
-
async getOrderDetails(_orderRef) {
|
|
122
|
-
throw new Error("Use getOrder(offerer, salt) \u2014 Stellar orders are storage-keyed");
|
|
123
|
-
}
|
|
124
|
-
async getOrder(offerer, salt) {
|
|
125
|
-
return this.view("get_order", [
|
|
126
|
-
stellarSdk.nativeToScVal(offerer, { type: "address" }),
|
|
127
|
-
stellarSdk.nativeToScVal(salt, { type: "u64" })
|
|
128
|
-
]);
|
|
129
|
-
}
|
|
130
|
-
async getCounter(address) {
|
|
131
|
-
const value = await this.view("get_counter", [stellarSdk.nativeToScVal(address, { type: "address" })]);
|
|
132
|
-
return BigInt(value ?? 0);
|
|
133
|
-
}
|
|
134
|
-
async view(method, args) {
|
|
135
|
-
const account = await this.server.getAccount(PLACEHOLDER_SOURCE);
|
|
136
|
-
const tx = new stellarSdk.TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase }).addOperation(this.contract.call(method, ...args)).setTimeout(30).build();
|
|
137
|
-
const sim = await this.server.simulateTransaction(tx);
|
|
138
|
-
if (stellarSdk.rpc.Api.isSimulationSuccess(sim) && sim.result?.retval) {
|
|
139
|
-
return stellarSdk.scValToNative(sim.result.retval);
|
|
140
|
-
}
|
|
141
|
-
return void 0;
|
|
142
|
-
}
|
|
143
|
-
async invoke(signer, op) {
|
|
144
|
-
const account = await this.server.getAccount(signer.publicKey);
|
|
145
|
-
const tx = new stellarSdk.TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase }).addOperation(op).setTimeout(60).build();
|
|
146
|
-
const prepared = await this.server.prepareTransaction(tx);
|
|
147
|
-
const signedXdr = await signer.signTransaction(prepared.toXDR(), this.passphrase);
|
|
148
|
-
const signed = stellarSdk.TransactionBuilder.fromXDR(signedXdr, this.passphrase);
|
|
149
|
-
const sent = await this.server.sendTransaction(signed);
|
|
150
|
-
return sent.hash;
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
var PLACEHOLDER_SOURCE = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF";
|
|
154
|
-
function maybeCoords() {
|
|
155
|
-
try {
|
|
156
|
-
return getCoordinates("STELLAR");
|
|
157
|
-
} catch {
|
|
158
|
-
return void 0;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
exports.StellarVenue = StellarVenue;
|
|
163
|
-
exports.stellarOrderRef = stellarOrderRef;
|
|
164
|
-
//# sourceMappingURL=index.cjs.map
|
|
165
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chains.ts","../../src/stellar/venue.ts"],"names":["sha256","Contract","nativeToScVal","TransactionBuilder","rpc","scValToNative"],"mappings":"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","file":"index.cjs","sourcesContent":["// Single source of per-chain coordinates for Medialane's own services\n// (spec 2026-06-13 §3.1, Decision A). Keyed by CHAIN ALONE — Medialane is\n// mainnet-only, so there is no network axis (refines decisions.md D-9).\n\n/** Mirrors the backend Prisma `Chain` enum. */\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\n/** Starknet coordinates of Medialane services + venues. All fields optional\n * because not every service exists on every chain. */\nexport interface StarknetCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721ClassHash?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155ClassHash?: `0x${string}`;\n marketplace1155StartBlock?: number;\n collection721?: `0x${string}`;\n collection721StartBlock?: number;\n ipNftClassHash?: `0x${string}`;\n ipCollectionClassHash?: `0x${string}`;\n collection1155?: `0x${string}`;\n collection1155FactoryClassHash?: `0x${string}`;\n collection1155ClassHash?: `0x${string}`;\n collection1155StartBlock?: number;\n popFactory?: `0x${string}`;\n popCollectionClassHash?: `0x${string}`;\n dropFactory?: `0x${string}`;\n dropCollectionClassHash?: `0x${string}`;\n nftComments?: `0x${string}`;\n creatorCoinFactory?: `0x${string}`;\n creatorCoinEkuboLauncher?: `0x${string}`;\n creatorCoinClassHash?: `0x${string}`;\n creatorCoinFactoryClassHash?: `0x${string}`;\n creatorCoinStartBlock?: number;\n ekuboCore?: `0x${string}`;\n ipTicketsFactory?: `0x${string}`;\n ipTicketCollectionClassHash?: `0x${string}`;\n ipTicketsStartBlock?: number;\n ipClubRegistry?: `0x${string}`;\n ipClubNftClassHash?: `0x${string}`;\n ipClubStartBlock?: number;\n ipSponsorship?: `0x${string}`;\n ipSponsorshipStartBlock?: number;\n ipSponsorshipLicense?: `0x${string}`;\n}\n\n/** Coordinates per chain. Only STARKNET is populated today; adding a chain\n * means adding an entry here (litmus test, spec §7). */\n/** EVM coordinates — one shape for Ethereum and Base (same bytecode, two\n * chains). Populated at deploy time (federation Phase 4). */\nexport interface EvmCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155StartBlock?: number;\n mipRegistry?: `0x${string}`;\n mipRegistryStartBlock?: number;\n mipEditionsRegistry?: `0x${string}`;\n mipEditionsRegistryStartBlock?: number;\n}\n\n/** Solana coordinates — base58 program ids. Populated at deploy time. */\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\n/** Stellar (Soroban) coordinates — strkey contract ids. Populated at deploy\n * time; the registry takes the collection WASM hash as a constructor arg. */\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\n/** Per-chain coordinate shapes. Every chain is an equal entry — no chain is\n * privileged in core (chain-sovereignty I2/I4). */\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\n/** @deprecated Renamed — use `StarknetCoordinates` (coordinates are per-chain-shaped). */\nexport type ChainCoordinates = StarknetCoordinates;\n\nconst COORDINATES: CoordinatesByChain = {\n STARKNET: {\n rpcUrl: \"https://rpc.starknet.lava.build\",\n marketplace721: \"0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc\",\n marketplace721ClassHash: \"0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90\",\n marketplace721StartBlock: 11198146,\n marketplace1155: \"0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38\",\n marketplace1155ClassHash: \"0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328\",\n marketplace1155StartBlock: 11198267,\n collection721: \"0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea\",\n collection721StartBlock: 11198496,\n ipNftClassHash: \"0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc\",\n ipCollectionClassHash: \"0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4\",\n collection1155: \"0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551\",\n collection1155FactoryClassHash: \"0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2\",\n collection1155ClassHash: \"0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78\",\n collection1155StartBlock: 11199527,\n popFactory: \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\",\n popCollectionClassHash: \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\",\n dropFactory: \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\",\n dropCollectionClassHash: \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\",\n nftComments: \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\",\n creatorCoinFactory: \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\",\n creatorCoinEkuboLauncher: \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\",\n creatorCoinClassHash: \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\",\n creatorCoinFactoryClassHash: \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\",\n creatorCoinStartBlock: 10474544,\n ekuboCore: \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\",\n ipTicketsFactory: \"0x0664c2d6a4da9ee3ff053ceeba7579c01f2fedfd9d2b57b4c07af3734bd4acab\",\n ipTicketCollectionClassHash: \"0x086f59c416e365e2bee4ceff9f1dcb96198f2342d50ba4621f60b831863adb6\",\n ipTicketsStartBlock: 11404656,\n ipClubRegistry: \"0x00e189c619b6bb07d78973a149641c59c37eb0716f8584d7520bce12d303eede\",\n ipClubNftClassHash: \"0x02bc9b20cca21b04245e9215bf7121f4d7295b195890e449b472b573017fb889\",\n ipClubStartBlock: 11404776,\n ipSponsorship: \"0x044d9b9c3bb29b94685b0a3fe27a5e2dfa30a3637ab55979c718ebcd3268bc2f\",\n ipSponsorshipStartBlock: 11405085,\n // Dedicated ip-erc721/MIP instance for sponsorship receipts (class hash\n // 0x01bd7e39c5135b32b664e34cbbb4eafbd707a0fbc3ec2ef28657f52577d277d7) —\n // never the genesis-mint instance.\n ipSponsorshipLicense: \"0x06bcfc4e97758a2abf95af4bd49596efdbfd88ccd740caddc56ad0a4bd095839\",\n },\n};\n\nexport function getCoordinates(chain: \"STARKNET\"): StarknetCoordinates;\nexport function getCoordinates(chain: \"ETHEREUM\" | \"BASE\"): EvmCoordinates;\nexport function getCoordinates(chain: \"SOLANA\"): SolanaCoordinates;\nexport function getCoordinates(chain: \"STELLAR\"): StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates {\n const c = COORDINATES[chain];\n if (!c) throw new Error(`No coordinates configured for chain \"${chain}\"`);\n return c;\n}\n\nexport const DEFAULT_CHAIN: Chain = \"STARKNET\";\n\n/** Typed Starknet coordinates for Starknet-only modules; throws when the\n * client is scoped to another chain. */\nexport function getStarknetCoordinates(chain: Chain): StarknetCoordinates {\n if (chain !== \"STARKNET\") {\n throw new Error(`This module is Starknet-only (client chain: \"${chain}\")`);\n }\n return getCoordinates(\"STARKNET\");\n}\n","import {\n Contract,\n TransactionBuilder,\n nativeToScVal,\n scValToNative,\n type Transaction,\n rpc,\n} from \"@stellar/stellar-sdk\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type StellarCoordinates } from \"../chains.js\";\nimport type {\n AdapterTxResult,\n OrderRef,\n RegisterOrderParams,\n VenueAdapter,\n} from \"../adapters/types.js\";\n\n/** Signer shape: the account's public key + a transaction signer (a wallet\n * kit or a Keypair-backed callback). */\nexport interface StellarSigner {\n publicKey: string;\n signTransaction(xdr: string, networkPassphrase: string): Promise<string>;\n}\n\nexport interface StellarVenueOptions {\n server: rpc.Server;\n networkPassphrase: string;\n /** Defaults to the chain registry's venue contract (populated at deploy). */\n contractId?: string;\n baseFee?: string;\n}\n\n/** Canonical order id on Stellar (spec §3.2b): a stable hex digest of\n * (contract, offerer, salt) — orders are storage-keyed, not hashed on-chain. */\nexport function stellarOrderRef(contractId: string, offerer: string, salt: bigint): OrderRef {\n const payload = new TextEncoder().encode(`${contractId}:${offerer}:${salt.toString()}`);\n return \"0x\" + Buffer.from(sha256(payload)).toString(\"hex\");\n}\n\n/** The Medialane venue adapter for Stellar (Soroban). Both directions settle\n * in any SEP-41 token including native XLM (the native SAC) — the chain with\n * no native-bid restriction. */\nexport class StellarVenue implements VenueAdapter<StellarSigner> {\n readonly chain: Chain = \"STELLAR\";\n private readonly server: rpc.Server;\n private readonly passphrase: string;\n private readonly contract: Contract;\n private readonly contractId: string;\n private readonly baseFee: string;\n\n constructor(opts: StellarVenueOptions) {\n this.server = opts.server;\n this.passphrase = opts.networkPassphrase;\n const contractId = opts.contractId ?? maybeCoords()?.marketplace;\n if (!contractId) throw new Error(\"No Stellar venue contract configured\");\n this.contractId = contractId;\n this.contract = new Contract(contractId);\n this.baseFee = opts.baseFee ?? \"100\";\n }\n\n async registerOrder(\n signer: StellarSigner,\n params: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const salt = BigInt(params.salt);\n const counter = await this.getCounter(signer.publicKey);\n const op = this.contract.call(\n \"register_order\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n nativeToScVal(salt, { type: \"u64\" }),\n nativeToScVal([params.side === \"listing\" ? \"Listing\" : \"Bid\"], { type: \"symbol\" }),\n nativeToScVal(params.asset.contract, { type: \"address\" }),\n nativeToScVal(Number(params.asset.tokenId), { type: \"u32\" }),\n nativeToScVal(params.paymentToken, { type: \"address\" }),\n nativeToScVal(BigInt(params.amount), { type: \"i128\" }),\n nativeToScVal(params.royaltyMaxBps, { type: \"u32\" }),\n nativeToScVal(BigInt(params.startTime), { type: \"u64\" }),\n nativeToScVal(BigInt(params.endTime), { type: \"u64\" }),\n nativeToScVal(counter, { type: \"u64\" }),\n );\n const txHash = await this.invoke(signer, op);\n return { txHash, orderRef: stellarOrderRef(this.contractId, signer.publicKey, salt) };\n }\n\n async fulfillOrder(\n signer: StellarSigner,\n _orderRef: OrderRef,\n opts?: { offerer?: string; salt?: string },\n ): Promise<AdapterTxResult> {\n if (!opts?.offerer || opts.salt === undefined) {\n throw new Error(\"Stellar fulfillment needs { offerer, salt } (orders are storage-keyed)\");\n }\n const op = this.contract.call(\n \"fulfill_order\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n nativeToScVal(opts.offerer, { type: \"address\" }),\n nativeToScVal(BigInt(opts.salt), { type: \"u64\" }),\n );\n return { txHash: await this.invoke(signer, op) };\n }\n\n async cancelOrder(\n signer: StellarSigner,\n _orderRef: OrderRef,\n opts?: { salt?: string },\n ): Promise<AdapterTxResult> {\n if (opts?.salt === undefined) throw new Error(\"Stellar cancel needs { salt }\");\n const op = this.contract.call(\n \"cancel_order\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n nativeToScVal(BigInt(opts.salt), { type: \"u64\" }),\n );\n return { txHash: await this.invoke(signer, op) };\n }\n\n async incrementCounter(signer: StellarSigner): Promise<AdapterTxResult> {\n const op = this.contract.call(\n \"increment_counter\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n );\n return { txHash: await this.invoke(signer, op) };\n }\n\n async getOrderDetails(_orderRef: OrderRef): Promise<unknown> {\n throw new Error(\"Use getOrder(offerer, salt) — Stellar orders are storage-keyed\");\n }\n\n async getOrder(offerer: string, salt: bigint): Promise<unknown> {\n return this.view(\"get_order\", [\n nativeToScVal(offerer, { type: \"address\" }),\n nativeToScVal(salt, { type: \"u64\" }),\n ]);\n }\n\n async getCounter(address: string): Promise<bigint> {\n const value = await this.view(\"get_counter\", [nativeToScVal(address, { type: \"address\" })]);\n return BigInt((value as bigint | number | undefined) ?? 0);\n }\n\n private async view(method: string, args: Parameters<Contract[\"call\"]>[1][]): Promise<unknown> {\n const account = await this.server.getAccount(PLACEHOLDER_SOURCE);\n const tx = new TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase })\n .addOperation(this.contract.call(method, ...args))\n .setTimeout(30)\n .build();\n const sim = await this.server.simulateTransaction(tx);\n if (rpc.Api.isSimulationSuccess(sim) && sim.result?.retval) {\n return scValToNative(sim.result.retval);\n }\n return undefined;\n }\n\n private async invoke(\n signer: StellarSigner,\n op: ReturnType<Contract[\"call\"]>,\n ): Promise<string> {\n const account = await this.server.getAccount(signer.publicKey);\n const tx = new TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase })\n .addOperation(op)\n .setTimeout(60)\n .build();\n const prepared = await this.server.prepareTransaction(tx);\n const signedXdr = await signer.signTransaction(prepared.toXDR(), this.passphrase);\n const signed = TransactionBuilder.fromXDR(signedXdr, this.passphrase) as Transaction;\n const sent = await this.server.sendTransaction(signed);\n return sent.hash;\n }\n}\n\n/** Public \"muxed-free\" placeholder for view simulations (any funded account\n * works as a simulation source; callers can override via getAccount). */\nconst PLACEHOLDER_SOURCE = \"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF\";\n\nfunction maybeCoords(): StellarCoordinates | undefined {\n try {\n return getCoordinates(\"STELLAR\");\n } catch {\n return undefined;\n }\n}\n"]}
|
package/dist/stellar/index.d.cts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { rpc } from '@stellar/stellar-sdk';
|
|
2
|
-
import { C as Chain } from '../chains-DE8AJMIY.cjs';
|
|
3
|
-
import { V as VenueAdapter, R as RegisterOrderParams, A as AdapterTxResult, O as OrderRef } from '../types-CYu4fwq8.cjs';
|
|
4
|
-
|
|
5
|
-
/** Signer shape: the account's public key + a transaction signer (a wallet
|
|
6
|
-
* kit or a Keypair-backed callback). */
|
|
7
|
-
interface StellarSigner {
|
|
8
|
-
publicKey: string;
|
|
9
|
-
signTransaction(xdr: string, networkPassphrase: string): Promise<string>;
|
|
10
|
-
}
|
|
11
|
-
interface StellarVenueOptions {
|
|
12
|
-
server: rpc.Server;
|
|
13
|
-
networkPassphrase: string;
|
|
14
|
-
/** Defaults to the chain registry's venue contract (populated at deploy). */
|
|
15
|
-
contractId?: string;
|
|
16
|
-
baseFee?: string;
|
|
17
|
-
}
|
|
18
|
-
/** Canonical order id on Stellar (spec §3.2b): a stable hex digest of
|
|
19
|
-
* (contract, offerer, salt) — orders are storage-keyed, not hashed on-chain. */
|
|
20
|
-
declare function stellarOrderRef(contractId: string, offerer: string, salt: bigint): OrderRef;
|
|
21
|
-
/** The Medialane venue adapter for Stellar (Soroban). Both directions settle
|
|
22
|
-
* in any SEP-41 token including native XLM (the native SAC) — the chain with
|
|
23
|
-
* no native-bid restriction. */
|
|
24
|
-
declare class StellarVenue implements VenueAdapter<StellarSigner> {
|
|
25
|
-
readonly chain: Chain;
|
|
26
|
-
private readonly server;
|
|
27
|
-
private readonly passphrase;
|
|
28
|
-
private readonly contract;
|
|
29
|
-
private readonly contractId;
|
|
30
|
-
private readonly baseFee;
|
|
31
|
-
constructor(opts: StellarVenueOptions);
|
|
32
|
-
registerOrder(signer: StellarSigner, params: RegisterOrderParams): Promise<AdapterTxResult & {
|
|
33
|
-
orderRef: OrderRef;
|
|
34
|
-
}>;
|
|
35
|
-
fulfillOrder(signer: StellarSigner, _orderRef: OrderRef, opts?: {
|
|
36
|
-
offerer?: string;
|
|
37
|
-
salt?: string;
|
|
38
|
-
}): Promise<AdapterTxResult>;
|
|
39
|
-
cancelOrder(signer: StellarSigner, _orderRef: OrderRef, opts?: {
|
|
40
|
-
salt?: string;
|
|
41
|
-
}): Promise<AdapterTxResult>;
|
|
42
|
-
incrementCounter(signer: StellarSigner): Promise<AdapterTxResult>;
|
|
43
|
-
getOrderDetails(_orderRef: OrderRef): Promise<unknown>;
|
|
44
|
-
getOrder(offerer: string, salt: bigint): Promise<unknown>;
|
|
45
|
-
getCounter(address: string): Promise<bigint>;
|
|
46
|
-
private view;
|
|
47
|
-
private invoke;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { type StellarSigner, StellarVenue, type StellarVenueOptions, stellarOrderRef };
|
package/dist/stellar/index.d.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { rpc } from '@stellar/stellar-sdk';
|
|
2
|
-
import { C as Chain } from '../chains-DE8AJMIY.js';
|
|
3
|
-
import { V as VenueAdapter, R as RegisterOrderParams, A as AdapterTxResult, O as OrderRef } from '../types-DdwylC5C.js';
|
|
4
|
-
|
|
5
|
-
/** Signer shape: the account's public key + a transaction signer (a wallet
|
|
6
|
-
* kit or a Keypair-backed callback). */
|
|
7
|
-
interface StellarSigner {
|
|
8
|
-
publicKey: string;
|
|
9
|
-
signTransaction(xdr: string, networkPassphrase: string): Promise<string>;
|
|
10
|
-
}
|
|
11
|
-
interface StellarVenueOptions {
|
|
12
|
-
server: rpc.Server;
|
|
13
|
-
networkPassphrase: string;
|
|
14
|
-
/** Defaults to the chain registry's venue contract (populated at deploy). */
|
|
15
|
-
contractId?: string;
|
|
16
|
-
baseFee?: string;
|
|
17
|
-
}
|
|
18
|
-
/** Canonical order id on Stellar (spec §3.2b): a stable hex digest of
|
|
19
|
-
* (contract, offerer, salt) — orders are storage-keyed, not hashed on-chain. */
|
|
20
|
-
declare function stellarOrderRef(contractId: string, offerer: string, salt: bigint): OrderRef;
|
|
21
|
-
/** The Medialane venue adapter for Stellar (Soroban). Both directions settle
|
|
22
|
-
* in any SEP-41 token including native XLM (the native SAC) — the chain with
|
|
23
|
-
* no native-bid restriction. */
|
|
24
|
-
declare class StellarVenue implements VenueAdapter<StellarSigner> {
|
|
25
|
-
readonly chain: Chain;
|
|
26
|
-
private readonly server;
|
|
27
|
-
private readonly passphrase;
|
|
28
|
-
private readonly contract;
|
|
29
|
-
private readonly contractId;
|
|
30
|
-
private readonly baseFee;
|
|
31
|
-
constructor(opts: StellarVenueOptions);
|
|
32
|
-
registerOrder(signer: StellarSigner, params: RegisterOrderParams): Promise<AdapterTxResult & {
|
|
33
|
-
orderRef: OrderRef;
|
|
34
|
-
}>;
|
|
35
|
-
fulfillOrder(signer: StellarSigner, _orderRef: OrderRef, opts?: {
|
|
36
|
-
offerer?: string;
|
|
37
|
-
salt?: string;
|
|
38
|
-
}): Promise<AdapterTxResult>;
|
|
39
|
-
cancelOrder(signer: StellarSigner, _orderRef: OrderRef, opts?: {
|
|
40
|
-
salt?: string;
|
|
41
|
-
}): Promise<AdapterTxResult>;
|
|
42
|
-
incrementCounter(signer: StellarSigner): Promise<AdapterTxResult>;
|
|
43
|
-
getOrderDetails(_orderRef: OrderRef): Promise<unknown>;
|
|
44
|
-
getOrder(offerer: string, salt: bigint): Promise<unknown>;
|
|
45
|
-
getCounter(address: string): Promise<bigint>;
|
|
46
|
-
private view;
|
|
47
|
-
private invoke;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { type StellarSigner, StellarVenue, type StellarVenueOptions, stellarOrderRef };
|
package/dist/stellar/index.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { Contract, nativeToScVal, TransactionBuilder, rpc, scValToNative } from '@stellar/stellar-sdk';
|
|
2
|
-
import { sha256 } from '@noble/hashes/sha2.js';
|
|
3
|
-
|
|
4
|
-
// src/stellar/venue.ts
|
|
5
|
-
|
|
6
|
-
// src/chains.ts
|
|
7
|
-
var COORDINATES = {
|
|
8
|
-
STARKNET: {
|
|
9
|
-
rpcUrl: "https://rpc.starknet.lava.build",
|
|
10
|
-
marketplace721: "0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc",
|
|
11
|
-
marketplace721ClassHash: "0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90",
|
|
12
|
-
marketplace721StartBlock: 11198146,
|
|
13
|
-
marketplace1155: "0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38",
|
|
14
|
-
marketplace1155ClassHash: "0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328",
|
|
15
|
-
marketplace1155StartBlock: 11198267,
|
|
16
|
-
collection721: "0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea",
|
|
17
|
-
collection721StartBlock: 11198496,
|
|
18
|
-
ipNftClassHash: "0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc",
|
|
19
|
-
ipCollectionClassHash: "0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4",
|
|
20
|
-
collection1155: "0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551",
|
|
21
|
-
collection1155FactoryClassHash: "0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2",
|
|
22
|
-
collection1155ClassHash: "0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78",
|
|
23
|
-
collection1155StartBlock: 11199527,
|
|
24
|
-
popFactory: "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111",
|
|
25
|
-
popCollectionClassHash: "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f",
|
|
26
|
-
dropFactory: "0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800",
|
|
27
|
-
dropCollectionClassHash: "0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282",
|
|
28
|
-
nftComments: "0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843",
|
|
29
|
-
creatorCoinFactory: "0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c",
|
|
30
|
-
creatorCoinEkuboLauncher: "0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4",
|
|
31
|
-
creatorCoinClassHash: "0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6",
|
|
32
|
-
creatorCoinFactoryClassHash: "0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55",
|
|
33
|
-
creatorCoinStartBlock: 10474544,
|
|
34
|
-
ekuboCore: "0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b",
|
|
35
|
-
ipTicketsFactory: "0x0664c2d6a4da9ee3ff053ceeba7579c01f2fedfd9d2b57b4c07af3734bd4acab",
|
|
36
|
-
ipTicketCollectionClassHash: "0x086f59c416e365e2bee4ceff9f1dcb96198f2342d50ba4621f60b831863adb6",
|
|
37
|
-
ipTicketsStartBlock: 11404656,
|
|
38
|
-
ipClubRegistry: "0x00e189c619b6bb07d78973a149641c59c37eb0716f8584d7520bce12d303eede",
|
|
39
|
-
ipClubNftClassHash: "0x02bc9b20cca21b04245e9215bf7121f4d7295b195890e449b472b573017fb889",
|
|
40
|
-
ipClubStartBlock: 11404776,
|
|
41
|
-
ipSponsorship: "0x044d9b9c3bb29b94685b0a3fe27a5e2dfa30a3637ab55979c718ebcd3268bc2f",
|
|
42
|
-
ipSponsorshipStartBlock: 11405085,
|
|
43
|
-
// Dedicated ip-erc721/MIP instance for sponsorship receipts (class hash
|
|
44
|
-
// 0x01bd7e39c5135b32b664e34cbbb4eafbd707a0fbc3ec2ef28657f52577d277d7) —
|
|
45
|
-
// never the genesis-mint instance.
|
|
46
|
-
ipSponsorshipLicense: "0x06bcfc4e97758a2abf95af4bd49596efdbfd88ccd740caddc56ad0a4bd095839"
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
function getCoordinates(chain) {
|
|
50
|
-
const c = COORDINATES[chain];
|
|
51
|
-
if (!c) throw new Error(`No coordinates configured for chain "${chain}"`);
|
|
52
|
-
return c;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// src/stellar/venue.ts
|
|
56
|
-
function stellarOrderRef(contractId, offerer, salt) {
|
|
57
|
-
const payload = new TextEncoder().encode(`${contractId}:${offerer}:${salt.toString()}`);
|
|
58
|
-
return "0x" + Buffer.from(sha256(payload)).toString("hex");
|
|
59
|
-
}
|
|
60
|
-
var StellarVenue = class {
|
|
61
|
-
constructor(opts) {
|
|
62
|
-
this.chain = "STELLAR";
|
|
63
|
-
this.server = opts.server;
|
|
64
|
-
this.passphrase = opts.networkPassphrase;
|
|
65
|
-
const contractId = opts.contractId ?? maybeCoords()?.marketplace;
|
|
66
|
-
if (!contractId) throw new Error("No Stellar venue contract configured");
|
|
67
|
-
this.contractId = contractId;
|
|
68
|
-
this.contract = new Contract(contractId);
|
|
69
|
-
this.baseFee = opts.baseFee ?? "100";
|
|
70
|
-
}
|
|
71
|
-
async registerOrder(signer, params) {
|
|
72
|
-
const salt = BigInt(params.salt);
|
|
73
|
-
const counter = await this.getCounter(signer.publicKey);
|
|
74
|
-
const op = this.contract.call(
|
|
75
|
-
"register_order",
|
|
76
|
-
nativeToScVal(signer.publicKey, { type: "address" }),
|
|
77
|
-
nativeToScVal(salt, { type: "u64" }),
|
|
78
|
-
nativeToScVal([params.side === "listing" ? "Listing" : "Bid"], { type: "symbol" }),
|
|
79
|
-
nativeToScVal(params.asset.contract, { type: "address" }),
|
|
80
|
-
nativeToScVal(Number(params.asset.tokenId), { type: "u32" }),
|
|
81
|
-
nativeToScVal(params.paymentToken, { type: "address" }),
|
|
82
|
-
nativeToScVal(BigInt(params.amount), { type: "i128" }),
|
|
83
|
-
nativeToScVal(params.royaltyMaxBps, { type: "u32" }),
|
|
84
|
-
nativeToScVal(BigInt(params.startTime), { type: "u64" }),
|
|
85
|
-
nativeToScVal(BigInt(params.endTime), { type: "u64" }),
|
|
86
|
-
nativeToScVal(counter, { type: "u64" })
|
|
87
|
-
);
|
|
88
|
-
const txHash = await this.invoke(signer, op);
|
|
89
|
-
return { txHash, orderRef: stellarOrderRef(this.contractId, signer.publicKey, salt) };
|
|
90
|
-
}
|
|
91
|
-
async fulfillOrder(signer, _orderRef, opts) {
|
|
92
|
-
if (!opts?.offerer || opts.salt === void 0) {
|
|
93
|
-
throw new Error("Stellar fulfillment needs { offerer, salt } (orders are storage-keyed)");
|
|
94
|
-
}
|
|
95
|
-
const op = this.contract.call(
|
|
96
|
-
"fulfill_order",
|
|
97
|
-
nativeToScVal(signer.publicKey, { type: "address" }),
|
|
98
|
-
nativeToScVal(opts.offerer, { type: "address" }),
|
|
99
|
-
nativeToScVal(BigInt(opts.salt), { type: "u64" })
|
|
100
|
-
);
|
|
101
|
-
return { txHash: await this.invoke(signer, op) };
|
|
102
|
-
}
|
|
103
|
-
async cancelOrder(signer, _orderRef, opts) {
|
|
104
|
-
if (opts?.salt === void 0) throw new Error("Stellar cancel needs { salt }");
|
|
105
|
-
const op = this.contract.call(
|
|
106
|
-
"cancel_order",
|
|
107
|
-
nativeToScVal(signer.publicKey, { type: "address" }),
|
|
108
|
-
nativeToScVal(BigInt(opts.salt), { type: "u64" })
|
|
109
|
-
);
|
|
110
|
-
return { txHash: await this.invoke(signer, op) };
|
|
111
|
-
}
|
|
112
|
-
async incrementCounter(signer) {
|
|
113
|
-
const op = this.contract.call(
|
|
114
|
-
"increment_counter",
|
|
115
|
-
nativeToScVal(signer.publicKey, { type: "address" })
|
|
116
|
-
);
|
|
117
|
-
return { txHash: await this.invoke(signer, op) };
|
|
118
|
-
}
|
|
119
|
-
async getOrderDetails(_orderRef) {
|
|
120
|
-
throw new Error("Use getOrder(offerer, salt) \u2014 Stellar orders are storage-keyed");
|
|
121
|
-
}
|
|
122
|
-
async getOrder(offerer, salt) {
|
|
123
|
-
return this.view("get_order", [
|
|
124
|
-
nativeToScVal(offerer, { type: "address" }),
|
|
125
|
-
nativeToScVal(salt, { type: "u64" })
|
|
126
|
-
]);
|
|
127
|
-
}
|
|
128
|
-
async getCounter(address) {
|
|
129
|
-
const value = await this.view("get_counter", [nativeToScVal(address, { type: "address" })]);
|
|
130
|
-
return BigInt(value ?? 0);
|
|
131
|
-
}
|
|
132
|
-
async view(method, args) {
|
|
133
|
-
const account = await this.server.getAccount(PLACEHOLDER_SOURCE);
|
|
134
|
-
const tx = new TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase }).addOperation(this.contract.call(method, ...args)).setTimeout(30).build();
|
|
135
|
-
const sim = await this.server.simulateTransaction(tx);
|
|
136
|
-
if (rpc.Api.isSimulationSuccess(sim) && sim.result?.retval) {
|
|
137
|
-
return scValToNative(sim.result.retval);
|
|
138
|
-
}
|
|
139
|
-
return void 0;
|
|
140
|
-
}
|
|
141
|
-
async invoke(signer, op) {
|
|
142
|
-
const account = await this.server.getAccount(signer.publicKey);
|
|
143
|
-
const tx = new TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase }).addOperation(op).setTimeout(60).build();
|
|
144
|
-
const prepared = await this.server.prepareTransaction(tx);
|
|
145
|
-
const signedXdr = await signer.signTransaction(prepared.toXDR(), this.passphrase);
|
|
146
|
-
const signed = TransactionBuilder.fromXDR(signedXdr, this.passphrase);
|
|
147
|
-
const sent = await this.server.sendTransaction(signed);
|
|
148
|
-
return sent.hash;
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
var PLACEHOLDER_SOURCE = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF";
|
|
152
|
-
function maybeCoords() {
|
|
153
|
-
try {
|
|
154
|
-
return getCoordinates("STELLAR");
|
|
155
|
-
} catch {
|
|
156
|
-
return void 0;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
export { StellarVenue, stellarOrderRef };
|
|
161
|
-
//# sourceMappingURL=index.js.map
|
|
162
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chains.ts","../../src/stellar/venue.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Single source of per-chain coordinates for Medialane's own services\n// (spec 2026-06-13 §3.1, Decision A). Keyed by CHAIN ALONE — Medialane is\n// mainnet-only, so there is no network axis (refines decisions.md D-9).\n\n/** Mirrors the backend Prisma `Chain` enum. */\nexport const CHAINS = [\"STARKNET\", \"ETHEREUM\", \"SOLANA\", \"BASE\", \"STELLAR\", \"BITCOIN\"] as const;\nexport type Chain = (typeof CHAINS)[number];\n\n/** Starknet coordinates of Medialane services + venues. All fields optional\n * because not every service exists on every chain. */\nexport interface StarknetCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721ClassHash?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155ClassHash?: `0x${string}`;\n marketplace1155StartBlock?: number;\n collection721?: `0x${string}`;\n collection721StartBlock?: number;\n ipNftClassHash?: `0x${string}`;\n ipCollectionClassHash?: `0x${string}`;\n collection1155?: `0x${string}`;\n collection1155FactoryClassHash?: `0x${string}`;\n collection1155ClassHash?: `0x${string}`;\n collection1155StartBlock?: number;\n popFactory?: `0x${string}`;\n popCollectionClassHash?: `0x${string}`;\n dropFactory?: `0x${string}`;\n dropCollectionClassHash?: `0x${string}`;\n nftComments?: `0x${string}`;\n creatorCoinFactory?: `0x${string}`;\n creatorCoinEkuboLauncher?: `0x${string}`;\n creatorCoinClassHash?: `0x${string}`;\n creatorCoinFactoryClassHash?: `0x${string}`;\n creatorCoinStartBlock?: number;\n ekuboCore?: `0x${string}`;\n ipTicketsFactory?: `0x${string}`;\n ipTicketCollectionClassHash?: `0x${string}`;\n ipTicketsStartBlock?: number;\n ipClubRegistry?: `0x${string}`;\n ipClubNftClassHash?: `0x${string}`;\n ipClubStartBlock?: number;\n ipSponsorship?: `0x${string}`;\n ipSponsorshipStartBlock?: number;\n ipSponsorshipLicense?: `0x${string}`;\n}\n\n/** Coordinates per chain. Only STARKNET is populated today; adding a chain\n * means adding an entry here (litmus test, spec §7). */\n/** EVM coordinates — one shape for Ethereum and Base (same bytecode, two\n * chains). Populated at deploy time (federation Phase 4). */\nexport interface EvmCoordinates {\n rpcUrl: string;\n marketplace721?: `0x${string}`;\n marketplace721StartBlock?: number;\n marketplace1155?: `0x${string}`;\n marketplace1155StartBlock?: number;\n mipRegistry?: `0x${string}`;\n mipRegistryStartBlock?: number;\n mipEditionsRegistry?: `0x${string}`;\n mipEditionsRegistryStartBlock?: number;\n}\n\n/** Solana coordinates — base58 program ids. Populated at deploy time. */\nexport interface SolanaCoordinates {\n rpcUrl: string;\n mipCollectionsProgram?: string;\n marketplaceProgram?: string;\n startSlot?: number;\n}\n\n/** Stellar (Soroban) coordinates — strkey contract ids. Populated at deploy\n * time; the registry takes the collection WASM hash as a constructor arg. */\nexport interface StellarCoordinates {\n rpcUrl: string;\n mipRegistry?: string;\n marketplace?: string;\n collectionWasmHash?: string;\n startLedger?: number;\n}\n\n/** Per-chain coordinate shapes. Every chain is an equal entry — no chain is\n * privileged in core (chain-sovereignty I2/I4). */\nexport interface CoordinatesByChain {\n STARKNET?: StarknetCoordinates;\n ETHEREUM?: EvmCoordinates;\n BASE?: EvmCoordinates;\n SOLANA?: SolanaCoordinates;\n STELLAR?: StellarCoordinates;\n BITCOIN?: never;\n}\n\n/** @deprecated Renamed — use `StarknetCoordinates` (coordinates are per-chain-shaped). */\nexport type ChainCoordinates = StarknetCoordinates;\n\nconst COORDINATES: CoordinatesByChain = {\n STARKNET: {\n rpcUrl: \"https://rpc.starknet.lava.build\",\n marketplace721: \"0x03eda9a2b6ad90845a43591bac8083ebaf677d51fdf20f503b2c01889e3131fc\",\n marketplace721ClassHash: \"0x0700d9230d07e5203e27778c0dc70f9134d2b25bf319f7cf8348dc66a6923e90\",\n marketplace721StartBlock: 11198146,\n marketplace1155: \"0x07c4ce1c19ea48cc11135ed22b19ff745f5aec508c3828593002e4f76fdb1b38\",\n marketplace1155ClassHash: \"0x0242f5c388da7cee2d99e2a69453c8159bf927fbec4e797a3cfdcbbcb5b68328\",\n marketplace1155StartBlock: 11198267,\n collection721: \"0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea\",\n collection721StartBlock: 11198496,\n ipNftClassHash: \"0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc\",\n ipCollectionClassHash: \"0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4\",\n collection1155: \"0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551\",\n collection1155FactoryClassHash: \"0x04eb6b419770f13bd191f120b9fc9ee624c0613ad4490062d293ca2016b3b1d2\",\n collection1155ClassHash: \"0x06cf3f5a2322dac35e07a6064a5b8802f19fda8aa3f4726f0cb7bc05dea1bd78\",\n collection1155StartBlock: 11199527,\n popFactory: \"0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111\",\n popCollectionClassHash: \"0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f\",\n dropFactory: \"0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800\",\n dropCollectionClassHash: \"0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282\",\n nftComments: \"0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843\",\n creatorCoinFactory: \"0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c\",\n creatorCoinEkuboLauncher: \"0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4\",\n creatorCoinClassHash: \"0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6\",\n creatorCoinFactoryClassHash: \"0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55\",\n creatorCoinStartBlock: 10474544,\n ekuboCore: \"0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b\",\n ipTicketsFactory: \"0x0664c2d6a4da9ee3ff053ceeba7579c01f2fedfd9d2b57b4c07af3734bd4acab\",\n ipTicketCollectionClassHash: \"0x086f59c416e365e2bee4ceff9f1dcb96198f2342d50ba4621f60b831863adb6\",\n ipTicketsStartBlock: 11404656,\n ipClubRegistry: \"0x00e189c619b6bb07d78973a149641c59c37eb0716f8584d7520bce12d303eede\",\n ipClubNftClassHash: \"0x02bc9b20cca21b04245e9215bf7121f4d7295b195890e449b472b573017fb889\",\n ipClubStartBlock: 11404776,\n ipSponsorship: \"0x044d9b9c3bb29b94685b0a3fe27a5e2dfa30a3637ab55979c718ebcd3268bc2f\",\n ipSponsorshipStartBlock: 11405085,\n // Dedicated ip-erc721/MIP instance for sponsorship receipts (class hash\n // 0x01bd7e39c5135b32b664e34cbbb4eafbd707a0fbc3ec2ef28657f52577d277d7) —\n // never the genesis-mint instance.\n ipSponsorshipLicense: \"0x06bcfc4e97758a2abf95af4bd49596efdbfd88ccd740caddc56ad0a4bd095839\",\n },\n};\n\nexport function getCoordinates(chain: \"STARKNET\"): StarknetCoordinates;\nexport function getCoordinates(chain: \"ETHEREUM\" | \"BASE\"): EvmCoordinates;\nexport function getCoordinates(chain: \"SOLANA\"): SolanaCoordinates;\nexport function getCoordinates(chain: \"STELLAR\"): StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates;\nexport function getCoordinates(\n chain: Chain,\n): StarknetCoordinates | EvmCoordinates | SolanaCoordinates | StellarCoordinates {\n const c = COORDINATES[chain];\n if (!c) throw new Error(`No coordinates configured for chain \"${chain}\"`);\n return c;\n}\n\nexport const DEFAULT_CHAIN: Chain = \"STARKNET\";\n\n/** Typed Starknet coordinates for Starknet-only modules; throws when the\n * client is scoped to another chain. */\nexport function getStarknetCoordinates(chain: Chain): StarknetCoordinates {\n if (chain !== \"STARKNET\") {\n throw new Error(`This module is Starknet-only (client chain: \"${chain}\")`);\n }\n return getCoordinates(\"STARKNET\");\n}\n","import {\n Contract,\n TransactionBuilder,\n nativeToScVal,\n scValToNative,\n type Transaction,\n rpc,\n} from \"@stellar/stellar-sdk\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport type { Chain } from \"../chains.js\";\nimport { getCoordinates, type StellarCoordinates } from \"../chains.js\";\nimport type {\n AdapterTxResult,\n OrderRef,\n RegisterOrderParams,\n VenueAdapter,\n} from \"../adapters/types.js\";\n\n/** Signer shape: the account's public key + a transaction signer (a wallet\n * kit or a Keypair-backed callback). */\nexport interface StellarSigner {\n publicKey: string;\n signTransaction(xdr: string, networkPassphrase: string): Promise<string>;\n}\n\nexport interface StellarVenueOptions {\n server: rpc.Server;\n networkPassphrase: string;\n /** Defaults to the chain registry's venue contract (populated at deploy). */\n contractId?: string;\n baseFee?: string;\n}\n\n/** Canonical order id on Stellar (spec §3.2b): a stable hex digest of\n * (contract, offerer, salt) — orders are storage-keyed, not hashed on-chain. */\nexport function stellarOrderRef(contractId: string, offerer: string, salt: bigint): OrderRef {\n const payload = new TextEncoder().encode(`${contractId}:${offerer}:${salt.toString()}`);\n return \"0x\" + Buffer.from(sha256(payload)).toString(\"hex\");\n}\n\n/** The Medialane venue adapter for Stellar (Soroban). Both directions settle\n * in any SEP-41 token including native XLM (the native SAC) — the chain with\n * no native-bid restriction. */\nexport class StellarVenue implements VenueAdapter<StellarSigner> {\n readonly chain: Chain = \"STELLAR\";\n private readonly server: rpc.Server;\n private readonly passphrase: string;\n private readonly contract: Contract;\n private readonly contractId: string;\n private readonly baseFee: string;\n\n constructor(opts: StellarVenueOptions) {\n this.server = opts.server;\n this.passphrase = opts.networkPassphrase;\n const contractId = opts.contractId ?? maybeCoords()?.marketplace;\n if (!contractId) throw new Error(\"No Stellar venue contract configured\");\n this.contractId = contractId;\n this.contract = new Contract(contractId);\n this.baseFee = opts.baseFee ?? \"100\";\n }\n\n async registerOrder(\n signer: StellarSigner,\n params: RegisterOrderParams,\n ): Promise<AdapterTxResult & { orderRef: OrderRef }> {\n const salt = BigInt(params.salt);\n const counter = await this.getCounter(signer.publicKey);\n const op = this.contract.call(\n \"register_order\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n nativeToScVal(salt, { type: \"u64\" }),\n nativeToScVal([params.side === \"listing\" ? \"Listing\" : \"Bid\"], { type: \"symbol\" }),\n nativeToScVal(params.asset.contract, { type: \"address\" }),\n nativeToScVal(Number(params.asset.tokenId), { type: \"u32\" }),\n nativeToScVal(params.paymentToken, { type: \"address\" }),\n nativeToScVal(BigInt(params.amount), { type: \"i128\" }),\n nativeToScVal(params.royaltyMaxBps, { type: \"u32\" }),\n nativeToScVal(BigInt(params.startTime), { type: \"u64\" }),\n nativeToScVal(BigInt(params.endTime), { type: \"u64\" }),\n nativeToScVal(counter, { type: \"u64\" }),\n );\n const txHash = await this.invoke(signer, op);\n return { txHash, orderRef: stellarOrderRef(this.contractId, signer.publicKey, salt) };\n }\n\n async fulfillOrder(\n signer: StellarSigner,\n _orderRef: OrderRef,\n opts?: { offerer?: string; salt?: string },\n ): Promise<AdapterTxResult> {\n if (!opts?.offerer || opts.salt === undefined) {\n throw new Error(\"Stellar fulfillment needs { offerer, salt } (orders are storage-keyed)\");\n }\n const op = this.contract.call(\n \"fulfill_order\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n nativeToScVal(opts.offerer, { type: \"address\" }),\n nativeToScVal(BigInt(opts.salt), { type: \"u64\" }),\n );\n return { txHash: await this.invoke(signer, op) };\n }\n\n async cancelOrder(\n signer: StellarSigner,\n _orderRef: OrderRef,\n opts?: { salt?: string },\n ): Promise<AdapterTxResult> {\n if (opts?.salt === undefined) throw new Error(\"Stellar cancel needs { salt }\");\n const op = this.contract.call(\n \"cancel_order\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n nativeToScVal(BigInt(opts.salt), { type: \"u64\" }),\n );\n return { txHash: await this.invoke(signer, op) };\n }\n\n async incrementCounter(signer: StellarSigner): Promise<AdapterTxResult> {\n const op = this.contract.call(\n \"increment_counter\",\n nativeToScVal(signer.publicKey, { type: \"address\" }),\n );\n return { txHash: await this.invoke(signer, op) };\n }\n\n async getOrderDetails(_orderRef: OrderRef): Promise<unknown> {\n throw new Error(\"Use getOrder(offerer, salt) — Stellar orders are storage-keyed\");\n }\n\n async getOrder(offerer: string, salt: bigint): Promise<unknown> {\n return this.view(\"get_order\", [\n nativeToScVal(offerer, { type: \"address\" }),\n nativeToScVal(salt, { type: \"u64\" }),\n ]);\n }\n\n async getCounter(address: string): Promise<bigint> {\n const value = await this.view(\"get_counter\", [nativeToScVal(address, { type: \"address\" })]);\n return BigInt((value as bigint | number | undefined) ?? 0);\n }\n\n private async view(method: string, args: Parameters<Contract[\"call\"]>[1][]): Promise<unknown> {\n const account = await this.server.getAccount(PLACEHOLDER_SOURCE);\n const tx = new TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase })\n .addOperation(this.contract.call(method, ...args))\n .setTimeout(30)\n .build();\n const sim = await this.server.simulateTransaction(tx);\n if (rpc.Api.isSimulationSuccess(sim) && sim.result?.retval) {\n return scValToNative(sim.result.retval);\n }\n return undefined;\n }\n\n private async invoke(\n signer: StellarSigner,\n op: ReturnType<Contract[\"call\"]>,\n ): Promise<string> {\n const account = await this.server.getAccount(signer.publicKey);\n const tx = new TransactionBuilder(account, { fee: this.baseFee, networkPassphrase: this.passphrase })\n .addOperation(op)\n .setTimeout(60)\n .build();\n const prepared = await this.server.prepareTransaction(tx);\n const signedXdr = await signer.signTransaction(prepared.toXDR(), this.passphrase);\n const signed = TransactionBuilder.fromXDR(signedXdr, this.passphrase) as Transaction;\n const sent = await this.server.sendTransaction(signed);\n return sent.hash;\n }\n}\n\n/** Public \"muxed-free\" placeholder for view simulations (any funded account\n * works as a simulation source; callers can override via getAccount). */\nconst PLACEHOLDER_SOURCE = \"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF\";\n\nfunction maybeCoords(): StellarCoordinates | undefined {\n try {\n return getCoordinates(\"STELLAR\");\n } catch {\n return undefined;\n }\n}\n"]}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { C as Chain } from './chains-DE8AJMIY.cjs';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Chain-neutral adapter interfaces — the target surface every chain adapter
|
|
5
|
-
* (`@medialane/sdk/starknet`, `/evm`, `/solana`, `/stellar`) implements, so
|
|
6
|
-
* apps can transact against a chain-tagged asset without knowing the chain
|
|
7
|
-
* (chain-sovereignty I2/I4; platform-federation spec §2.2). `Signer` is the
|
|
8
|
-
* chain's wallet/account handle (starknet.js AccountInterface, a viem wallet
|
|
9
|
-
* client, a Solana signer, a Stellar signer) — adapters fix the type.
|
|
10
|
-
*/
|
|
11
|
-
/** A chain-tagged asset reference — the working asset identity `(chain, contract, tokenId)`. */
|
|
12
|
-
interface AssetRef {
|
|
13
|
-
chain: Chain;
|
|
14
|
-
contract: string;
|
|
15
|
-
tokenId: string;
|
|
16
|
-
}
|
|
17
|
-
/** Canonical order identity per chain (platform-federation spec §3.2b):
|
|
18
|
-
* Starknet/EVM = the typed-data digest; Solana = the order PDA address;
|
|
19
|
-
* Stellar = a stable digest of (contract, offerer, salt). */
|
|
20
|
-
type OrderRef = string;
|
|
21
|
-
interface RegisterOrderParams {
|
|
22
|
-
asset: AssetRef;
|
|
23
|
-
/** "listing" offers the asset; "bid" offers payment. */
|
|
24
|
-
side: "listing" | "bid";
|
|
25
|
-
/** Payment token in the chain's canonical address form; adapters define the
|
|
26
|
-
* native-currency sentinel where the chain has one. */
|
|
27
|
-
paymentToken: string;
|
|
28
|
-
/** Base-unit amount as a decimal string. */
|
|
29
|
-
amount: string;
|
|
30
|
-
royaltyMaxBps: number;
|
|
31
|
-
startTime: number;
|
|
32
|
-
/** 0 = no expiry. */
|
|
33
|
-
endTime: number;
|
|
34
|
-
salt: string;
|
|
35
|
-
}
|
|
36
|
-
interface AdapterTxResult {
|
|
37
|
-
txHash: string;
|
|
38
|
-
}
|
|
39
|
-
interface VenueAdapter<Signer> {
|
|
40
|
-
readonly chain: Chain;
|
|
41
|
-
registerOrder(signer: Signer, params: RegisterOrderParams): Promise<AdapterTxResult & {
|
|
42
|
-
orderRef: OrderRef;
|
|
43
|
-
}>;
|
|
44
|
-
fulfillOrder(signer: Signer, orderRef: OrderRef, opts?: {
|
|
45
|
-
quantity?: string;
|
|
46
|
-
} & Record<string, string | undefined>): Promise<AdapterTxResult>;
|
|
47
|
-
cancelOrder(signer: Signer, orderRef: OrderRef, opts?: Record<string, string | undefined>): Promise<AdapterTxResult>;
|
|
48
|
-
incrementCounter(signer: Signer): Promise<AdapterTxResult>;
|
|
49
|
-
getOrderDetails(orderRef: OrderRef): Promise<unknown>;
|
|
50
|
-
getCounter(address: string): Promise<bigint>;
|
|
51
|
-
}
|
|
52
|
-
interface CreateCollectionInput {
|
|
53
|
-
name: string;
|
|
54
|
-
symbol: string;
|
|
55
|
-
baseUri: string;
|
|
56
|
-
royaltyBps: number;
|
|
57
|
-
}
|
|
58
|
-
interface MintInput {
|
|
59
|
-
collection: string;
|
|
60
|
-
recipient: string;
|
|
61
|
-
tokenUri: string;
|
|
62
|
-
}
|
|
63
|
-
interface IssuanceAdapter<Signer> {
|
|
64
|
-
readonly chain: Chain;
|
|
65
|
-
createCollection(signer: Signer, params: CreateCollectionInput): Promise<AdapterTxResult & {
|
|
66
|
-
collection: string;
|
|
67
|
-
}>;
|
|
68
|
-
mint(signer: Signer, params: MintInput): Promise<AdapterTxResult & {
|
|
69
|
-
tokenId: string;
|
|
70
|
-
}>;
|
|
71
|
-
batchMint(signer: Signer, params: {
|
|
72
|
-
collection: string;
|
|
73
|
-
recipients: string[];
|
|
74
|
-
tokenUris: string[];
|
|
75
|
-
}): Promise<AdapterTxResult>;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export type { AdapterTxResult as A, CreateCollectionInput as C, IssuanceAdapter as I, MintInput as M, OrderRef as O, RegisterOrderParams as R, VenueAdapter as V, AssetRef as a };
|