@kaspacom/kcc20-tx-builder 0.8.0-fee.4 → 0.8.0-fee.6

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/RELEASING.md +16 -0
  3. package/artifacts/KCC20FeePolicyV1.manifest.json +4 -4
  4. package/artifacts/KCC20WrapperFeeArgentV1.placeholder.json +1816 -360
  5. package/artifacts/KCC20WrapperFeeV1.placeholder.json +1818 -362
  6. package/dist/artifacts.d.ts +5 -5
  7. package/dist/artifacts.js +5 -5
  8. package/dist/cjs/artifacts.d.ts +5 -5
  9. package/dist/cjs/artifacts.js +5 -5
  10. package/dist/cjs/engine.js +2770 -0
  11. package/dist/cjs/engine.js.map +1 -1
  12. package/dist/cjs/escrow-market-artifacts.d.ts +90 -0
  13. package/dist/cjs/escrow-market-artifacts.js +128 -0
  14. package/dist/cjs/escrow-market-artifacts.js.map +1 -0
  15. package/dist/cjs/escrow-market-setup.d.ts +429 -0
  16. package/dist/cjs/escrow-market-setup.js +140 -0
  17. package/dist/cjs/escrow-market-setup.js.map +1 -0
  18. package/dist/cjs/index.d.ts +2 -0
  19. package/dist/cjs/index.js +2 -0
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/operations.d.ts +1 -1
  22. package/dist/cjs/operations.js +14 -0
  23. package/dist/cjs/operations.js.map +1 -1
  24. package/dist/cjs/sale-common.d.ts +1 -1
  25. package/dist/engine.d.ts.map +1 -1
  26. package/dist/engine.js +2770 -0
  27. package/dist/engine.js.map +1 -1
  28. package/dist/escrow-market-artifacts.d.ts +91 -0
  29. package/dist/escrow-market-artifacts.d.ts.map +1 -0
  30. package/dist/escrow-market-artifacts.js +124 -0
  31. package/dist/escrow-market-artifacts.js.map +1 -0
  32. package/dist/escrow-market-setup.d.ts +430 -0
  33. package/dist/escrow-market-setup.d.ts.map +1 -0
  34. package/dist/escrow-market-setup.js +133 -0
  35. package/dist/escrow-market-setup.js.map +1 -0
  36. package/dist/index.d.ts +2 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/operations.d.ts +1 -1
  41. package/dist/operations.d.ts.map +1 -1
  42. package/dist/operations.js +14 -0
  43. package/dist/operations.js.map +1 -1
  44. package/dist/sale-common.d.ts +1 -1
  45. package/docs/COMPATIBILITY.json +1 -1
  46. package/package.json +3 -3
  47. package/src/artifacts.ts +5 -5
  48. package/src/engine.ts +2986 -0
  49. package/src/escrow-market-artifacts.ts +129 -0
  50. package/src/escrow-market-setup.ts +182 -0
  51. package/src/index.ts +2 -0
  52. package/src/operations.ts +14 -0
@@ -0,0 +1,91 @@
1
+ import { type Kcc20EscrowPolicy } from "./escrow-policy.js";
2
+ declare const PINS: {
3
+ readonly receipt: readonly ["KCC20FeeEscrowV1.placeholder.json", "KCC20FeeEscrowV1", "2ff79d6e8ca7176d6346ab7523c72b789f7238865cd9d3b056c83a8af1b5b2cd"];
4
+ readonly root: readonly ["KCC20OrderbookFeeRootV1.placeholder.json", "KCC20OrderbookFeeRootV1", "4f913975eebb0342272912573b9901f84551d9f421b80608c0b872a42479c011"];
5
+ readonly holder: readonly ["KCC20OrderbookFeeHolderV1.placeholder.json", "KCC20OrderbookFeeHolderV1", "78a3fe1ef7a4d7ae142ab78a3a71cef2c1a70ea638cd695e89ea891dd17eec67"];
6
+ readonly ask: readonly ["KCC20OrderbookFeeAskV1.placeholder.json", "KCC20OrderbookFeeAskV1", "b60465af84c75121820323aa83155b6ddcfaae4bff2c64b06740058f5ebc0f95"];
7
+ readonly bid: readonly ["KCC20OrderbookFeeBidV1.placeholder.json", "KCC20OrderbookFeeBidV1", "98d7c97319bbe1ca954c7f4f6a02467e90a7f3e84c14c91db650f8ef5887ee0e"];
8
+ readonly ticket: readonly ["KCC20FeeTicket.placeholder.json", "KCC20FeeTicket", "289f3f74914deb383d2cccc11128187a77e4bcea90e61c83e05d86c5c9d63bc5"];
9
+ readonly wrapper: readonly ["KCC20WrapperFeeV1.placeholder.json", "KCC20WrapperFeeV1", "84c3844493efd4bdf6b2e3435e1ac511f5b5a7f58b5b6c093c91e2edcae1a2e0"];
10
+ readonly argentWrapper: readonly ["KCC20WrapperFeeArgentV1.placeholder.json", "KCC20WrapperFeeArgentV1", "130f25462e070523821579d28809577fac6d010f8d5deabc66ad2de1c11d2c73"];
11
+ };
12
+ export type Kcc20FeeArtifactRole = keyof typeof PINS;
13
+ export type Kcc20FeeArtifactSet = {
14
+ [K in Kcc20FeeArtifactRole]: unknown;
15
+ };
16
+ /** Render a pinned versioned role with exact SilverScript runtime-state encoding. */
17
+ export declare function buildKcc20FeeMarketRoleScript(input: {
18
+ artifact: unknown;
19
+ role: "root" | "holder" | "ask" | "bid" | "wrapper" | "argentWrapper";
20
+ state: Record<string, unknown>;
21
+ }): {
22
+ redeemScript: Uint8Array<ArrayBuffer>;
23
+ scriptHash: string;
24
+ scriptPublicKey: {
25
+ version: 0;
26
+ scriptHex: string;
27
+ };
28
+ template: {
29
+ hash: string;
30
+ prefixLength: number;
31
+ suffixLength: number;
32
+ };
33
+ };
34
+ /** Check the compiled programs and immutable policy before any fee-market PSKT is built. */
35
+ export declare function verifyKcc20FeeMarketArtifacts(input: {
36
+ policy: Kcc20EscrowPolicy;
37
+ artifacts: Kcc20FeeArtifactSet;
38
+ wrapperProfile: "native" | "argent";
39
+ }): {
40
+ wrapper: {
41
+ prefix: Uint8Array<ArrayBuffer>;
42
+ suffix: Uint8Array<ArrayBuffer>;
43
+ prefixLength: number;
44
+ suffixLength: number;
45
+ hash: Uint8Array<ArrayBufferLike>;
46
+ };
47
+ receipt: {
48
+ prefix: Uint8Array<ArrayBuffer>;
49
+ suffix: Uint8Array<ArrayBuffer>;
50
+ prefixLength: number;
51
+ suffixLength: number;
52
+ hash: Uint8Array<ArrayBufferLike>;
53
+ };
54
+ root: {
55
+ prefix: Uint8Array<ArrayBuffer>;
56
+ suffix: Uint8Array<ArrayBuffer>;
57
+ prefixLength: number;
58
+ suffixLength: number;
59
+ hash: Uint8Array<ArrayBufferLike>;
60
+ };
61
+ holder: {
62
+ prefix: Uint8Array<ArrayBuffer>;
63
+ suffix: Uint8Array<ArrayBuffer>;
64
+ prefixLength: number;
65
+ suffixLength: number;
66
+ hash: Uint8Array<ArrayBufferLike>;
67
+ };
68
+ ask: {
69
+ prefix: Uint8Array<ArrayBuffer>;
70
+ suffix: Uint8Array<ArrayBuffer>;
71
+ prefixLength: number;
72
+ suffixLength: number;
73
+ hash: Uint8Array<ArrayBufferLike>;
74
+ };
75
+ bid: {
76
+ prefix: Uint8Array<ArrayBuffer>;
77
+ suffix: Uint8Array<ArrayBuffer>;
78
+ prefixLength: number;
79
+ suffixLength: number;
80
+ hash: Uint8Array<ArrayBufferLike>;
81
+ };
82
+ ticket: {
83
+ prefix: Uint8Array<ArrayBuffer>;
84
+ suffix: Uint8Array<ArrayBuffer>;
85
+ prefixLength: number;
86
+ suffixLength: number;
87
+ hash: Uint8Array<ArrayBufferLike>;
88
+ };
89
+ };
90
+ export {};
91
+ //# sourceMappingURL=escrow-market-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow-market-artifacts.d.ts","sourceRoot":"","sources":["../src/escrow-market-artifacts.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAErF,QAAA,MAAM,IAAI;;;;;;;;;CASA,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,IAAI,CAAC;AACrD,MAAM,MAAM,mBAAmB,GAAG;KAAG,CAAC,IAAI,oBAAoB,GAAG,OAAO;CAAE,CAAC;AAc3E,qFAAqF;AACrF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,eAAe,CAAC;IACtE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;;;;;;;;;;;;EAkDA;AAED,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCA"}
@@ -0,0 +1,124 @@
1
+ import { sha256 } from "@noble/hashes/sha256";
2
+ import { blake2b } from "@noble/hashes/blake2b";
3
+ import { normalizeSilverScriptArtifact, templateParts } from "./abi.js";
4
+ import { assertKcc20ArtifactScriptHash } from "./artifacts.js";
5
+ import { encodeKcc20EscrowPolicy } from "./escrow-policy.js";
6
+ const PINS = {
7
+ receipt: ["KCC20FeeEscrowV1.placeholder.json", "KCC20FeeEscrowV1", "2ff79d6e8ca7176d6346ab7523c72b789f7238865cd9d3b056c83a8af1b5b2cd"],
8
+ root: ["KCC20OrderbookFeeRootV1.placeholder.json", "KCC20OrderbookFeeRootV1", "4f913975eebb0342272912573b9901f84551d9f421b80608c0b872a42479c011"],
9
+ holder: ["KCC20OrderbookFeeHolderV1.placeholder.json", "KCC20OrderbookFeeHolderV1", "78a3fe1ef7a4d7ae142ab78a3a71cef2c1a70ea638cd695e89ea891dd17eec67"],
10
+ ask: ["KCC20OrderbookFeeAskV1.placeholder.json", "KCC20OrderbookFeeAskV1", "b60465af84c75121820323aa83155b6ddcfaae4bff2c64b06740058f5ebc0f95"],
11
+ bid: ["KCC20OrderbookFeeBidV1.placeholder.json", "KCC20OrderbookFeeBidV1", "98d7c97319bbe1ca954c7f4f6a02467e90a7f3e84c14c91db650f8ef5887ee0e"],
12
+ ticket: ["KCC20FeeTicket.placeholder.json", "KCC20FeeTicket", "289f3f74914deb383d2cccc11128187a77e4bcea90e61c83e05d86c5c9d63bc5"],
13
+ wrapper: ["KCC20WrapperFeeV1.placeholder.json", "KCC20WrapperFeeV1", "84c3844493efd4bdf6b2e3435e1ac511f5b5a7f58b5b6c093c91e2edcae1a2e0"],
14
+ argentWrapper: ["KCC20WrapperFeeArgentV1.placeholder.json", "KCC20WrapperFeeArgentV1", "130f25462e070523821579d28809577fac6d010f8d5deabc66ad2de1c11d2c73"],
15
+ };
16
+ const POLICY_ROLES = ["receipt", "root", "holder", "ask", "bid", "ticket"];
17
+ function hex(bytes) {
18
+ return Array.from(bytes, byte => byte.toString(16).padStart(2, "0")).join("");
19
+ }
20
+ function fixedBytes(value, width, field) {
21
+ if (typeof value !== "string" || !new RegExp(`^[0-9a-fA-F]{${width * 2}}$`).test(value)) {
22
+ throw new Error(`${field} must be ${width}-byte hex`);
23
+ }
24
+ return Uint8Array.from(value.match(/../g), part => Number.parseInt(part, 16));
25
+ }
26
+ /** Render a pinned versioned role with exact SilverScript runtime-state encoding. */
27
+ export function buildKcc20FeeMarketRoleScript(input) {
28
+ const [key, name, metadataHash] = PINS[input.role];
29
+ const raw = input.artifact;
30
+ if (!raw || typeof raw !== "object" ||
31
+ hex(sha256(new TextEncoder().encode(JSON.stringify(raw)))) !== metadataHash) {
32
+ throw new Error(`${input.role} fee-market artifact metadata mismatch`);
33
+ }
34
+ const artifact = normalizeSilverScriptArtifact(raw);
35
+ if (artifact.contract_name !== name)
36
+ throw new Error(`${input.role} contract mismatch`);
37
+ assertKcc20ArtifactScriptHash(key, artifact);
38
+ const fields = Object.values(raw.contracts ?? {})[0]?.runtime_state?.fields;
39
+ if (!fields || Object.keys(input.state).length !== fields.length ||
40
+ fields.some(field => !Object.hasOwn(input.state, field.name))) {
41
+ throw new Error(`${input.role} runtime state fields mismatch`);
42
+ }
43
+ const encoded = [];
44
+ for (const field of fields) {
45
+ const value = input.state[field.name];
46
+ const { kind, len } = field.type;
47
+ let bytes;
48
+ if (kind === "fixed_bytes" && Number.isInteger(len) && len > 0) {
49
+ bytes = fixedBytes(value, len, field.name);
50
+ }
51
+ else if (kind === "bool" && typeof value === "boolean") {
52
+ bytes = Uint8Array.of(value ? 1 : 0);
53
+ }
54
+ else if (kind === "byte" && Number.isInteger(value) && Number(value) >= 0 && Number(value) <= 255) {
55
+ bytes = Uint8Array.of(Number(value));
56
+ }
57
+ else if (kind === "int" && typeof value === "string" && /^(0|[1-9]\d*)$/.test(value) &&
58
+ BigInt(value) <= (1n << 63n) - 1n) {
59
+ bytes = new Uint8Array(8);
60
+ new DataView(bytes.buffer).setBigUint64(0, BigInt(value), true);
61
+ }
62
+ else {
63
+ throw new Error(`invalid ${input.role} state field ${field.name}`);
64
+ }
65
+ if (bytes.length <= 75)
66
+ encoded.push(bytes.length, ...bytes);
67
+ else if (bytes.length <= 65535)
68
+ encoded.push(77, bytes.length & 255, bytes.length >> 8, ...bytes);
69
+ else
70
+ throw new Error(`${field.name} exceeds script push size`);
71
+ }
72
+ const layout = artifact.state_layout;
73
+ if (!layout || encoded.length !== layout.len)
74
+ throw new Error(`${input.role} state width mismatch`);
75
+ const parts = templateParts(artifact);
76
+ const redeemScript = Uint8Array.from([...parts.prefix, ...encoded, ...parts.suffix]);
77
+ const scriptHash = hex(blake2b(redeemScript, { dkLen: 32 }));
78
+ return {
79
+ redeemScript,
80
+ scriptHash,
81
+ scriptPublicKey: { version: 0, scriptHex: `aa20${scriptHash}87` },
82
+ template: { hash: hex(parts.hash), prefixLength: parts.prefixLength, suffixLength: parts.suffixLength },
83
+ };
84
+ }
85
+ /** Check the compiled programs and immutable policy before any fee-market PSKT is built. */
86
+ export function verifyKcc20FeeMarketArtifacts(input) {
87
+ if (encodeKcc20EscrowPolicy(input.policy).length !== 361) {
88
+ throw new Error("invalid fee-market policy width");
89
+ }
90
+ const verified = {};
91
+ for (const role of [...POLICY_ROLES, input.wrapperProfile === "native" ? "wrapper" : "argentWrapper"]) {
92
+ const artifact = input.artifacts[role];
93
+ const [key, name, metadataHash] = PINS[role];
94
+ if (!artifact || typeof artifact !== "object")
95
+ throw new Error(`missing ${role} fee-market artifact`);
96
+ const actualMetadataHash = hex(sha256(new TextEncoder().encode(JSON.stringify(artifact))));
97
+ if (actualMetadataHash !== metadataHash)
98
+ throw new Error(`${role} fee-market artifact metadata mismatch`);
99
+ const normalized = normalizeSilverScriptArtifact(artifact);
100
+ if (normalized.contract_name !== name)
101
+ throw new Error(`${role} fee-market artifact contract mismatch`);
102
+ assertKcc20ArtifactScriptHash(key, normalized);
103
+ verified[role] = templateParts(normalized);
104
+ }
105
+ for (const role of POLICY_ROLES) {
106
+ const actual = verified[role];
107
+ const expected = input.policy[`${role}Template`];
108
+ if (hex(actual.hash) !== expected.hash.toLowerCase() ||
109
+ actual.prefixLength !== expected.prefixLength ||
110
+ actual.suffixLength !== expected.suffixLength) {
111
+ throw new Error(`${role} fee-market policy template mismatch`);
112
+ }
113
+ }
114
+ return {
115
+ wrapper: input.wrapperProfile === "native" ? verified.wrapper : verified.argentWrapper,
116
+ receipt: verified.receipt,
117
+ root: verified.root,
118
+ holder: verified.holder,
119
+ ask: verified.ask,
120
+ bid: verified.bid,
121
+ ticket: verified.ticket,
122
+ };
123
+ }
124
+ //# sourceMappingURL=escrow-market-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow-market-artifacts.js","sourceRoot":"","sources":["../src/escrow-market-artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,430 @@
1
+ import { type Kcc20EscrowPolicy } from "./escrow-policy.js";
2
+ import { type Kcc20FeeArtifactSet } from "./escrow-market-artifacts.js";
3
+ export interface Kcc20FeeMarketGenesisInput {
4
+ tokenId: string;
5
+ feeTicketId: string;
6
+ priceScale: bigint;
7
+ policy: Kcc20EscrowPolicy;
8
+ wrapperProfile: "native" | "argent";
9
+ artifacts: Kcc20FeeArtifactSet;
10
+ }
11
+ /** Produce the only genesis role: an unbound wrapper with no orderbook root. */
12
+ export declare function prepareKcc20FeeMarketGenesis(input: Kcc20FeeMarketGenesisInput): {
13
+ tokenId: string;
14
+ feeTicketId: string;
15
+ policyId: string;
16
+ state: {
17
+ canonicalTokenId: string;
18
+ enabled: boolean;
19
+ priceScale: string;
20
+ feeTicketId: string;
21
+ feePolicy: string;
22
+ authenticatedMarketId: string;
23
+ };
24
+ wrapper: {
25
+ redeemScript: Uint8Array<ArrayBuffer>;
26
+ scriptHash: string;
27
+ scriptPublicKey: {
28
+ version: 0;
29
+ scriptHex: string;
30
+ };
31
+ template: {
32
+ hash: string;
33
+ prefixLength: number;
34
+ suffixLength: number;
35
+ };
36
+ };
37
+ };
38
+ /** Render both bound outputs after the accepted genesis has fixed market ID. */
39
+ export declare function prepareKcc20FeeMarketBinding(input: Kcc20FeeMarketGenesisInput & {
40
+ marketId: string;
41
+ rootOwner: string;
42
+ rootOwnerScheme: number;
43
+ rootPayoutScriptHash: string;
44
+ }): {
45
+ genesis: {
46
+ tokenId: string;
47
+ feeTicketId: string;
48
+ policyId: string;
49
+ state: {
50
+ canonicalTokenId: string;
51
+ enabled: boolean;
52
+ priceScale: string;
53
+ feeTicketId: string;
54
+ feePolicy: string;
55
+ authenticatedMarketId: string;
56
+ };
57
+ wrapper: {
58
+ redeemScript: Uint8Array<ArrayBuffer>;
59
+ scriptHash: string;
60
+ scriptPublicKey: {
61
+ version: 0;
62
+ scriptHex: string;
63
+ };
64
+ template: {
65
+ hash: string;
66
+ prefixLength: number;
67
+ suffixLength: number;
68
+ };
69
+ };
70
+ };
71
+ marketId: string;
72
+ wrapperState: {
73
+ enabled: boolean;
74
+ authenticatedMarketId: string;
75
+ canonicalTokenId: string;
76
+ priceScale: string;
77
+ feeTicketId: string;
78
+ feePolicy: string;
79
+ };
80
+ wrapper: {
81
+ redeemScript: Uint8Array<ArrayBuffer>;
82
+ scriptHash: string;
83
+ scriptPublicKey: {
84
+ version: 0;
85
+ scriptHex: string;
86
+ };
87
+ template: {
88
+ hash: string;
89
+ prefixLength: number;
90
+ suffixLength: number;
91
+ };
92
+ };
93
+ rootState: {
94
+ canonicalTokenId: string;
95
+ owner: string;
96
+ owner_scheme: number;
97
+ amount: string;
98
+ mode: string;
99
+ unitPrice: string;
100
+ feeTicketId: string;
101
+ priceScale: string;
102
+ feePolicy: string;
103
+ payout_script_hash: string;
104
+ wrapper_spk_hash: string;
105
+ };
106
+ root: {
107
+ redeemScript: Uint8Array<ArrayBuffer>;
108
+ scriptHash: string;
109
+ scriptPublicKey: {
110
+ version: 0;
111
+ scriptHex: string;
112
+ };
113
+ template: {
114
+ hash: string;
115
+ prefixLength: number;
116
+ suffixLength: number;
117
+ };
118
+ };
119
+ };
120
+ /** Render a wrapped holder against the exact enabled wrapper for this market. */
121
+ export declare function prepareKcc20FeeMarketWrappedHolder(input: Kcc20FeeMarketGenesisInput & {
122
+ marketId: string;
123
+ recipientOwner: string;
124
+ recipientOwnerScheme: number;
125
+ recipientPayoutScriptHash: string;
126
+ tokenAmount: bigint;
127
+ }): {
128
+ marketId: string;
129
+ wrapperState: {
130
+ enabled: boolean;
131
+ authenticatedMarketId: string;
132
+ canonicalTokenId: string;
133
+ priceScale: string;
134
+ feeTicketId: string;
135
+ feePolicy: string;
136
+ };
137
+ wrapper: {
138
+ redeemScript: Uint8Array<ArrayBuffer>;
139
+ scriptHash: string;
140
+ scriptPublicKey: {
141
+ version: 0;
142
+ scriptHex: string;
143
+ };
144
+ template: {
145
+ hash: string;
146
+ prefixLength: number;
147
+ suffixLength: number;
148
+ };
149
+ };
150
+ holderState: {
151
+ canonicalTokenId: string;
152
+ owner: string;
153
+ owner_scheme: number;
154
+ amount: string;
155
+ mode: string;
156
+ unitPrice: string;
157
+ feeTicketId: string;
158
+ priceScale: string;
159
+ feePolicy: string;
160
+ payout_script_hash: string;
161
+ wrapper_spk_hash: string;
162
+ };
163
+ holder: {
164
+ redeemScript: Uint8Array<ArrayBuffer>;
165
+ scriptHash: string;
166
+ scriptPublicKey: {
167
+ version: 0;
168
+ scriptHex: string;
169
+ };
170
+ template: {
171
+ hash: string;
172
+ prefixLength: number;
173
+ suffixLength: number;
174
+ };
175
+ };
176
+ };
177
+ /** Render an ask and any holder continuation against a pinned market policy. */
178
+ export declare function prepareKcc20FeeMarketAsk(input: Kcc20FeeMarketGenesisInput & {
179
+ marketId: string;
180
+ owner: string;
181
+ ownerScheme: number;
182
+ payoutScriptHash: string;
183
+ holderAmount: bigint;
184
+ askAmount: bigint;
185
+ askUnitPrice: bigint;
186
+ }): {
187
+ holder: {
188
+ marketId: string;
189
+ wrapperState: {
190
+ enabled: boolean;
191
+ authenticatedMarketId: string;
192
+ canonicalTokenId: string;
193
+ priceScale: string;
194
+ feeTicketId: string;
195
+ feePolicy: string;
196
+ };
197
+ wrapper: {
198
+ redeemScript: Uint8Array<ArrayBuffer>;
199
+ scriptHash: string;
200
+ scriptPublicKey: {
201
+ version: 0;
202
+ scriptHex: string;
203
+ };
204
+ template: {
205
+ hash: string;
206
+ prefixLength: number;
207
+ suffixLength: number;
208
+ };
209
+ };
210
+ holderState: {
211
+ canonicalTokenId: string;
212
+ owner: string;
213
+ owner_scheme: number;
214
+ amount: string;
215
+ mode: string;
216
+ unitPrice: string;
217
+ feeTicketId: string;
218
+ priceScale: string;
219
+ feePolicy: string;
220
+ payout_script_hash: string;
221
+ wrapper_spk_hash: string;
222
+ };
223
+ holder: {
224
+ redeemScript: Uint8Array<ArrayBuffer>;
225
+ scriptHash: string;
226
+ scriptPublicKey: {
227
+ version: 0;
228
+ scriptHex: string;
229
+ };
230
+ template: {
231
+ hash: string;
232
+ prefixLength: number;
233
+ suffixLength: number;
234
+ };
235
+ };
236
+ };
237
+ askState: {
238
+ amount: string;
239
+ mode: string;
240
+ unitPrice: string;
241
+ canonicalTokenId: string;
242
+ owner: string;
243
+ owner_scheme: number;
244
+ feeTicketId: string;
245
+ priceScale: string;
246
+ feePolicy: string;
247
+ payout_script_hash: string;
248
+ wrapper_spk_hash: string;
249
+ };
250
+ ask: {
251
+ redeemScript: Uint8Array<ArrayBuffer>;
252
+ scriptHash: string;
253
+ scriptPublicKey: {
254
+ version: 0;
255
+ scriptHex: string;
256
+ };
257
+ template: {
258
+ hash: string;
259
+ prefixLength: number;
260
+ suffixLength: number;
261
+ };
262
+ };
263
+ remaining: bigint;
264
+ change: {
265
+ marketId: string;
266
+ wrapperState: {
267
+ enabled: boolean;
268
+ authenticatedMarketId: string;
269
+ canonicalTokenId: string;
270
+ priceScale: string;
271
+ feeTicketId: string;
272
+ feePolicy: string;
273
+ };
274
+ wrapper: {
275
+ redeemScript: Uint8Array<ArrayBuffer>;
276
+ scriptHash: string;
277
+ scriptPublicKey: {
278
+ version: 0;
279
+ scriptHex: string;
280
+ };
281
+ template: {
282
+ hash: string;
283
+ prefixLength: number;
284
+ suffixLength: number;
285
+ };
286
+ };
287
+ holderState: {
288
+ canonicalTokenId: string;
289
+ owner: string;
290
+ owner_scheme: number;
291
+ amount: string;
292
+ mode: string;
293
+ unitPrice: string;
294
+ feeTicketId: string;
295
+ priceScale: string;
296
+ feePolicy: string;
297
+ payout_script_hash: string;
298
+ wrapper_spk_hash: string;
299
+ };
300
+ holder: {
301
+ redeemScript: Uint8Array<ArrayBuffer>;
302
+ scriptHash: string;
303
+ scriptPublicKey: {
304
+ version: 0;
305
+ scriptHex: string;
306
+ };
307
+ template: {
308
+ hash: string;
309
+ prefixLength: number;
310
+ suffixLength: number;
311
+ };
312
+ };
313
+ } | null;
314
+ };
315
+ /** Render a bid while preserving the single market root unchanged. */
316
+ export declare function prepareKcc20FeeMarketBid(input: Kcc20FeeMarketGenesisInput & {
317
+ marketId: string;
318
+ rootOwner: string;
319
+ rootOwnerScheme: number;
320
+ rootPayoutScriptHash: string;
321
+ buyer: string;
322
+ buyerScheme: number;
323
+ buyerPayoutScriptHash: string;
324
+ bidAmount: bigint;
325
+ bidUnitPrice: bigint;
326
+ }): {
327
+ binding: {
328
+ genesis: {
329
+ tokenId: string;
330
+ feeTicketId: string;
331
+ policyId: string;
332
+ state: {
333
+ canonicalTokenId: string;
334
+ enabled: boolean;
335
+ priceScale: string;
336
+ feeTicketId: string;
337
+ feePolicy: string;
338
+ authenticatedMarketId: string;
339
+ };
340
+ wrapper: {
341
+ redeemScript: Uint8Array<ArrayBuffer>;
342
+ scriptHash: string;
343
+ scriptPublicKey: {
344
+ version: 0;
345
+ scriptHex: string;
346
+ };
347
+ template: {
348
+ hash: string;
349
+ prefixLength: number;
350
+ suffixLength: number;
351
+ };
352
+ };
353
+ };
354
+ marketId: string;
355
+ wrapperState: {
356
+ enabled: boolean;
357
+ authenticatedMarketId: string;
358
+ canonicalTokenId: string;
359
+ priceScale: string;
360
+ feeTicketId: string;
361
+ feePolicy: string;
362
+ };
363
+ wrapper: {
364
+ redeemScript: Uint8Array<ArrayBuffer>;
365
+ scriptHash: string;
366
+ scriptPublicKey: {
367
+ version: 0;
368
+ scriptHex: string;
369
+ };
370
+ template: {
371
+ hash: string;
372
+ prefixLength: number;
373
+ suffixLength: number;
374
+ };
375
+ };
376
+ rootState: {
377
+ canonicalTokenId: string;
378
+ owner: string;
379
+ owner_scheme: number;
380
+ amount: string;
381
+ mode: string;
382
+ unitPrice: string;
383
+ feeTicketId: string;
384
+ priceScale: string;
385
+ feePolicy: string;
386
+ payout_script_hash: string;
387
+ wrapper_spk_hash: string;
388
+ };
389
+ root: {
390
+ redeemScript: Uint8Array<ArrayBuffer>;
391
+ scriptHash: string;
392
+ scriptPublicKey: {
393
+ version: 0;
394
+ scriptHex: string;
395
+ };
396
+ template: {
397
+ hash: string;
398
+ prefixLength: number;
399
+ suffixLength: number;
400
+ };
401
+ };
402
+ };
403
+ bidState: {
404
+ owner: string;
405
+ owner_scheme: number;
406
+ amount: string;
407
+ mode: string;
408
+ unitPrice: string;
409
+ payout_script_hash: string;
410
+ canonicalTokenId: string;
411
+ feeTicketId: string;
412
+ priceScale: string;
413
+ feePolicy: string;
414
+ wrapper_spk_hash: string;
415
+ };
416
+ bid: {
417
+ redeemScript: Uint8Array<ArrayBuffer>;
418
+ scriptHash: string;
419
+ scriptPublicKey: {
420
+ version: 0;
421
+ scriptHex: string;
422
+ };
423
+ template: {
424
+ hash: string;
425
+ prefixLength: number;
426
+ suffixLength: number;
427
+ };
428
+ };
429
+ };
430
+ //# sourceMappingURL=escrow-market-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow-market-setup.d.ts","sourceRoot":"","sources":["../src/escrow-market-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,8BAA8B,CAAC;AAatC,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;EAuB7E;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,0BAA0B,GAAG;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBA;AAED,iFAAiF;AACjF,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,0BAA0B,GAAG;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCA;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,GAAG;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBA;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,GAAG;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBA"}