@medialane/sdk 0.192.0 → 0.194.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/dist/{chunk-V4UXHC53.cjs → chunk-BLEFV7GP.cjs} +2 -2
- package/dist/{chunk-V4UXHC53.cjs.map → chunk-BLEFV7GP.cjs.map} +1 -1
- package/dist/{chunk-2B4PVFOS.js → chunk-MOIM2AAQ.js} +2 -2
- package/dist/{chunk-2B4PVFOS.js.map → chunk-MOIM2AAQ.js.map} +1 -1
- package/dist/chunk-PZ5AY32C.js +9 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-Q7SFCCGT.cjs +11 -0
- package/dist/chunk-Q7SFCCGT.cjs.map +1 -0
- package/dist/contract/index.cjs +509 -0
- package/dist/contract/index.cjs.map +1 -0
- package/dist/contract/index.d.cts +104 -0
- package/dist/contract/index.d.ts +104 -0
- package/dist/contract/index.js +493 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/{errors-CrBviXC8.d.cts → errors-C39AqEX6.d.cts} +46 -309
- package/dist/{errors-kCrcWfrz.d.ts → errors-Cc9W7FFi.d.ts} +46 -309
- package/dist/evm/index.cjs +1 -0
- package/dist/evm/index.cjs.map +1 -1
- package/dist/evm/index.js +1 -0
- package/dist/evm/index.js.map +1 -1
- package/dist/index.cjs +78 -73
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/provisioning-BUYiU8Tr.d.cts +1720 -0
- package/dist/provisioning-BUYiU8Tr.d.ts +1720 -0
- package/dist/solana/index.cjs +1 -0
- package/dist/solana/index.cjs.map +1 -1
- package/dist/solana/index.js +1 -0
- package/dist/solana/index.js.map +1 -1
- package/dist/starknet/index.cjs +68 -67
- package/dist/starknet/index.cjs.map +1 -1
- package/dist/starknet/index.d.cts +3 -2
- package/dist/starknet/index.d.ts +3 -2
- package/dist/starknet/index.js +3 -2
- package/dist/starknet/index.js.map +1 -1
- package/dist/stellar/index.cjs +1 -0
- package/dist/stellar/index.cjs.map +1 -1
- package/dist/stellar/index.js +1 -0
- package/dist/stellar/index.js.map +1 -1
- package/package.json +6 -1
package/dist/stellar/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/stellar/venue.ts"],"names":["sha256","Contract","nativeToScVal","TransactionBuilder","rpc","scValToNative","getCoordinates"],"mappings":"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","file":"index.cjs","sourcesContent":["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\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\n contractId?: string;\n baseFee?: string;\n}\n\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\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\nconst PLACEHOLDER_SOURCE = \"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF\";\n\nfunction maybeCoords(): StellarCoordinates | undefined {\n try {\n return getCoordinates(\"STELLAR\");\n } catch {\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/stellar/venue.ts"],"names":["sha256","Contract","nativeToScVal","TransactionBuilder","rpc","scValToNative","getCoordinates"],"mappings":"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","file":"index.cjs","sourcesContent":["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\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\n contractId?: string;\n baseFee?: string;\n}\n\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\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\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.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/stellar/venue.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["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\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\n contractId?: string;\n baseFee?: string;\n}\n\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\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\nconst PLACEHOLDER_SOURCE = \"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF\";\n\nfunction maybeCoords(): StellarCoordinates | undefined {\n try {\n return getCoordinates(\"STELLAR\");\n } catch {\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/stellar/venue.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["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\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\n contractId?: string;\n baseFee?: string;\n}\n\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\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\nconst PLACEHOLDER_SOURCE = \"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF\";\n\nfunction maybeCoords(): StellarCoordinates | undefined {\n try {\n return getCoordinates(\"STELLAR\");\n } catch {\n return undefined;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@medialane/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.194.0",
|
|
4
4
|
"description": "Framework-agnostic TypeScript SDK for Medialane.io — the IP marketplace on Starknet",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -31,6 +31,11 @@
|
|
|
31
31
|
"types": "./dist/stellar/index.d.ts",
|
|
32
32
|
"import": "./dist/stellar/index.js",
|
|
33
33
|
"require": "./dist/stellar/index.cjs"
|
|
34
|
+
},
|
|
35
|
+
"./contract": {
|
|
36
|
+
"types": "./dist/contract/index.d.ts",
|
|
37
|
+
"import": "./dist/contract/index.js",
|
|
38
|
+
"require": "./dist/contract/index.cjs"
|
|
34
39
|
}
|
|
35
40
|
},
|
|
36
41
|
"license": "MIT",
|