@kaspacom/kcc20-tx-builder 0.1.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/LICENSE +201 -0
- package/README.md +104 -0
- package/artifacts/KCC20.placeholder.json +77479 -0
- package/artifacts/KCC20FeeTicket.placeholder.json +16846 -0
- package/artifacts/KCC20Orderbook.placeholder.json +78001 -0
- package/artifacts/KCC20Vesting.placeholder.json +4298 -0
- package/artifacts/KCC20Wrapper.placeholder.json +12246 -0
- package/dist/abi.d.ts +44 -0
- package/dist/abi.d.ts.map +1 -0
- package/dist/abi.js +336 -0
- package/dist/abi.js.map +1 -0
- package/dist/action-source-resolver.d.ts +80 -0
- package/dist/action-source-resolver.d.ts.map +1 -0
- package/dist/action-source-resolver.js +412 -0
- package/dist/action-source-resolver.js.map +1 -0
- package/dist/artifacts.d.ts +14 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +44 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/builder.d.ts +12 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +18 -0
- package/dist/builder.js.map +1 -0
- package/dist/cjs/abi.d.ts +43 -0
- package/dist/cjs/abi.js +361 -0
- package/dist/cjs/abi.js.map +1 -0
- package/dist/cjs/action-source-resolver.d.ts +79 -0
- package/dist/cjs/action-source-resolver.js +435 -0
- package/dist/cjs/action-source-resolver.js.map +1 -0
- package/dist/cjs/artifacts.d.ts +13 -0
- package/dist/cjs/artifacts.js +51 -0
- package/dist/cjs/artifacts.js.map +1 -0
- package/dist/cjs/builder.d.ts +11 -0
- package/dist/cjs/builder.js +22 -0
- package/dist/cjs/builder.js.map +1 -0
- package/dist/cjs/deploy-operation.d.ts +103 -0
- package/dist/cjs/deploy-operation.js +335 -0
- package/dist/cjs/deploy-operation.js.map +1 -0
- package/dist/cjs/encoding.d.ts +5 -0
- package/dist/cjs/encoding.js +51 -0
- package/dist/cjs/encoding.js.map +1 -0
- package/dist/cjs/engine.d.ts +40 -0
- package/dist/cjs/engine.js +8972 -0
- package/dist/cjs/engine.js.map +1 -0
- package/dist/cjs/errors.d.ts +7 -0
- package/dist/cjs/errors.js +23 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/fee-ticket-operation.d.ts +204 -0
- package/dist/cjs/fee-ticket-operation.js +327 -0
- package/dist/cjs/fee-ticket-operation.js.map +1 -0
- package/dist/cjs/index.d.ts +27 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/ladder-limit-orders.d.ts +41 -0
- package/dist/cjs/ladder-limit-orders.js +129 -0
- package/dist/cjs/ladder-limit-orders.js.map +1 -0
- package/dist/cjs/mint-availability-operation.d.ts +56 -0
- package/dist/cjs/mint-availability-operation.js +95 -0
- package/dist/cjs/mint-availability-operation.js.map +1 -0
- package/dist/cjs/models.d.ts +90 -0
- package/dist/cjs/models.js +6 -0
- package/dist/cjs/models.js.map +1 -0
- package/dist/cjs/operations.d.ts +6 -0
- package/dist/cjs/operations.js +41 -0
- package/dist/cjs/operations.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/paid-mint-amount.d.ts +69 -0
- package/dist/cjs/paid-mint-amount.js +281 -0
- package/dist/cjs/paid-mint-amount.js.map +1 -0
- package/dist/cjs/protocol.d.ts +21 -0
- package/dist/cjs/protocol.js +25 -0
- package/dist/cjs/protocol.js.map +1 -0
- package/dist/cjs/runtime.d.ts +27 -0
- package/dist/cjs/runtime.js +3 -0
- package/dist/cjs/runtime.js.map +1 -0
- package/dist/cjs/sale-common.d.ts +287 -0
- package/dist/cjs/sale-common.js +928 -0
- package/dist/cjs/sale-common.js.map +1 -0
- package/dist/cjs/source-provider.d.ts +11 -0
- package/dist/cjs/source-provider.js +3 -0
- package/dist/cjs/source-provider.js.map +1 -0
- package/dist/cjs/source-validation.d.ts +9 -0
- package/dist/cjs/source-validation.js +33 -0
- package/dist/cjs/source-validation.js.map +1 -0
- package/dist/cjs/token-amount.d.ts +31 -0
- package/dist/cjs/token-amount.js +252 -0
- package/dist/cjs/token-amount.js.map +1 -0
- package/dist/cjs/token-operation.d.ts +135 -0
- package/dist/cjs/token-operation.js +236 -0
- package/dist/cjs/token-operation.js.map +1 -0
- package/dist/cjs/trade-fee.d.ts +60 -0
- package/dist/cjs/trade-fee.js +185 -0
- package/dist/cjs/trade-fee.js.map +1 -0
- package/dist/cjs/trading-operation.d.ts +212 -0
- package/dist/cjs/trading-operation.js +587 -0
- package/dist/cjs/trading-operation.js.map +1 -0
- package/dist/cjs/verify-operation.d.ts +79 -0
- package/dist/cjs/verify-operation.js +246 -0
- package/dist/cjs/verify-operation.js.map +1 -0
- package/dist/cjs/wallet-operation.d.ts +52 -0
- package/dist/cjs/wallet-operation.js +58 -0
- package/dist/cjs/wallet-operation.js.map +1 -0
- package/dist/cjs/wasm-provider.d.ts +15 -0
- package/dist/cjs/wasm-provider.js +20 -0
- package/dist/cjs/wasm-provider.js.map +1 -0
- package/dist/cjs/wrapper-operation.d.ts +196 -0
- package/dist/cjs/wrapper-operation.js +317 -0
- package/dist/cjs/wrapper-operation.js.map +1 -0
- package/dist/deploy-operation.d.ts +104 -0
- package/dist/deploy-operation.d.ts.map +1 -0
- package/dist/deploy-operation.js +327 -0
- package/dist/deploy-operation.js.map +1 -0
- package/dist/encoding.d.ts +6 -0
- package/dist/encoding.d.ts.map +1 -0
- package/dist/encoding.js +44 -0
- package/dist/encoding.js.map +1 -0
- package/dist/engine.d.ts +41 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +8969 -0
- package/dist/engine.js.map +1 -0
- package/dist/errors.d.ts +8 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -0
- package/dist/fee-ticket-operation.d.ts +205 -0
- package/dist/fee-ticket-operation.d.ts.map +1 -0
- package/dist/fee-ticket-operation.js +320 -0
- package/dist/fee-ticket-operation.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/ladder-limit-orders.d.ts +42 -0
- package/dist/ladder-limit-orders.d.ts.map +1 -0
- package/dist/ladder-limit-orders.js +121 -0
- package/dist/ladder-limit-orders.js.map +1 -0
- package/dist/mint-availability-operation.d.ts +57 -0
- package/dist/mint-availability-operation.d.ts.map +1 -0
- package/dist/mint-availability-operation.js +91 -0
- package/dist/mint-availability-operation.js.map +1 -0
- package/dist/models.d.ts +91 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +3 -0
- package/dist/models.js.map +1 -0
- package/dist/operations.d.ts +7 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +36 -0
- package/dist/operations.js.map +1 -0
- package/dist/paid-mint-amount.d.ts +70 -0
- package/dist/paid-mint-amount.d.ts.map +1 -0
- package/dist/paid-mint-amount.js +268 -0
- package/dist/paid-mint-amount.js.map +1 -0
- package/dist/protocol.d.ts +22 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +22 -0
- package/dist/protocol.js.map +1 -0
- package/dist/runtime.d.ts +28 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -0
- package/dist/sale-common.d.ts +288 -0
- package/dist/sale-common.d.ts.map +1 -0
- package/dist/sale-common.js +844 -0
- package/dist/sale-common.js.map +1 -0
- package/dist/source-provider.d.ts +12 -0
- package/dist/source-provider.d.ts.map +1 -0
- package/dist/source-provider.js +2 -0
- package/dist/source-provider.js.map +1 -0
- package/dist/source-validation.d.ts +10 -0
- package/dist/source-validation.d.ts.map +1 -0
- package/dist/source-validation.js +28 -0
- package/dist/source-validation.js.map +1 -0
- package/dist/token-amount.d.ts +32 -0
- package/dist/token-amount.d.ts.map +1 -0
- package/dist/token-amount.js +237 -0
- package/dist/token-amount.js.map +1 -0
- package/dist/token-operation.d.ts +136 -0
- package/dist/token-operation.d.ts.map +1 -0
- package/dist/token-operation.js +231 -0
- package/dist/token-operation.js.map +1 -0
- package/dist/trade-fee.d.ts +61 -0
- package/dist/trade-fee.d.ts.map +1 -0
- package/dist/trade-fee.js +173 -0
- package/dist/trade-fee.js.map +1 -0
- package/dist/trading-operation.d.ts +213 -0
- package/dist/trading-operation.d.ts.map +1 -0
- package/dist/trading-operation.js +580 -0
- package/dist/trading-operation.js.map +1 -0
- package/dist/verify-operation.d.ts +80 -0
- package/dist/verify-operation.d.ts.map +1 -0
- package/dist/verify-operation.js +243 -0
- package/dist/verify-operation.js.map +1 -0
- package/dist/wallet-operation.d.ts +53 -0
- package/dist/wallet-operation.d.ts.map +1 -0
- package/dist/wallet-operation.js +55 -0
- package/dist/wallet-operation.js.map +1 -0
- package/dist/wasm-provider.d.ts +16 -0
- package/dist/wasm-provider.d.ts.map +1 -0
- package/dist/wasm-provider.js +17 -0
- package/dist/wasm-provider.js.map +1 -0
- package/dist/wrapper-operation.d.ts +197 -0
- package/dist/wrapper-operation.d.ts.map +1 -0
- package/dist/wrapper-operation.js +311 -0
- package/dist/wrapper-operation.js.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +84 -0
- package/src/abi.ts +493 -0
- package/src/action-source-resolver.ts +660 -0
- package/src/artifacts.ts +87 -0
- package/src/builder.ts +37 -0
- package/src/deploy-operation.ts +458 -0
- package/src/encoding.ts +58 -0
- package/src/engine.ts +13226 -0
- package/src/errors.ts +35 -0
- package/src/fee-ticket-operation.ts +518 -0
- package/src/index.ts +27 -0
- package/src/ladder-limit-orders.ts +184 -0
- package/src/mint-availability-operation.ts +146 -0
- package/src/models.ts +103 -0
- package/src/operations.ts +46 -0
- package/src/paid-mint-amount.ts +402 -0
- package/src/protocol.ts +28 -0
- package/src/runtime.ts +29 -0
- package/src/sale-common.ts +1238 -0
- package/src/source-provider.ts +12 -0
- package/src/source-validation.ts +47 -0
- package/src/token-amount.ts +302 -0
- package/src/token-operation.ts +384 -0
- package/src/trade-fee.ts +264 -0
- package/src/trading-operation.ts +842 -0
- package/src/verify-operation.ts +400 -0
- package/src/wallet-operation.ts +86 -0
- package/src/wasm-provider.ts +32 -0
- package/src/wrapper-operation.ts +531 -0
package/dist/cjs/abi.js
ADDED
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeSilverScriptArtifact = normalizeSilverScriptArtifact;
|
|
4
|
+
exports.canonicalFunctionSignature = canonicalFunctionSignature;
|
|
5
|
+
exports.dispatchTag = dispatchTag;
|
|
6
|
+
exports.dispatchTagFor = dispatchTagFor;
|
|
7
|
+
exports.templateHash = templateHash;
|
|
8
|
+
exports.templateParts = templateParts;
|
|
9
|
+
exports.mintExtensionCommitment = mintExtensionCommitment;
|
|
10
|
+
exports.holderExtensionCommitment = holderExtensionCommitment;
|
|
11
|
+
exports.buildKcc20ScriptForState = buildKcc20ScriptForState;
|
|
12
|
+
exports.encodeKcc20State = encodeKcc20State;
|
|
13
|
+
exports.encodeKcc20StateRecordArrays = encodeKcc20StateRecordArrays;
|
|
14
|
+
exports.buildKcc20TransferSigScript = buildKcc20TransferSigScript;
|
|
15
|
+
exports.buildKcc20TransferDelegatorSigScript = buildKcc20TransferDelegatorSigScript;
|
|
16
|
+
exports.buildKcc20MintByOwnerSigScript = buildKcc20MintByOwnerSigScript;
|
|
17
|
+
exports.buildKcc20MintPublicSigScript = buildKcc20MintPublicSigScript;
|
|
18
|
+
exports.buildKcc20BurnSigScript = buildKcc20BurnSigScript;
|
|
19
|
+
exports.buildKcc20SetPublicMintActiveSigScript = buildKcc20SetPublicMintActiveSigScript;
|
|
20
|
+
exports.p2pkOwnerWitness = p2pkOwnerWitness;
|
|
21
|
+
exports.ownerAuthorizationWitness = ownerAuthorizationWitness;
|
|
22
|
+
exports.signedI64Payload = signedI64Payload;
|
|
23
|
+
exports.unsignedLe64 = unsignedLe64;
|
|
24
|
+
exports.pushExplicit = pushExplicit;
|
|
25
|
+
exports.concatBytes = concatBytes;
|
|
26
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
27
|
+
// @ts-nocheck
|
|
28
|
+
const blake3_1 = require("@noble/hashes/blake3");
|
|
29
|
+
function hexBytes(value) {
|
|
30
|
+
const hex = value.replace(/^0x/i, "");
|
|
31
|
+
if (!/^(?:[0-9a-f]{2})*$/i.test(hex)) {
|
|
32
|
+
throw new Error("expected an even-length hexadecimal string");
|
|
33
|
+
}
|
|
34
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
35
|
+
for (let index = 0; index < bytes.length; index += 1) {
|
|
36
|
+
bytes[index] = Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16);
|
|
37
|
+
}
|
|
38
|
+
return bytes;
|
|
39
|
+
}
|
|
40
|
+
const MAX_I64 = 9223372036854775807n;
|
|
41
|
+
const MIN_I64 = -MAX_I64;
|
|
42
|
+
function normalizeSilverScriptArtifact(rawArtifact) {
|
|
43
|
+
const script = rawArtifact?.script ?? rawArtifact?.bytecode;
|
|
44
|
+
if (Array.isArray(script)) {
|
|
45
|
+
return {
|
|
46
|
+
...rawArtifact,
|
|
47
|
+
script: Array.from(script, Number),
|
|
48
|
+
bytecode: Array.from(rawArtifact?.bytecode ?? script, Number),
|
|
49
|
+
without_selector: false,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const portable = normalizePortableSilverScriptArtifact(rawArtifact);
|
|
53
|
+
if (portable)
|
|
54
|
+
return portable;
|
|
55
|
+
throw new Error(`${rawArtifact?.contract_name || "contract"} artifact is missing compiled bytecode`);
|
|
56
|
+
}
|
|
57
|
+
function normalizePortableSilverScriptArtifact(rawArtifact) {
|
|
58
|
+
if (rawArtifact?.schema_version !== 1 ||
|
|
59
|
+
!rawArtifact?.contracts ||
|
|
60
|
+
typeof rawArtifact.contracts !== "object") {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const entries = Object.entries(rawArtifact.contracts);
|
|
64
|
+
if (entries.length !== 1) {
|
|
65
|
+
throw new Error("portable SilverScript artifact must contain exactly one contract");
|
|
66
|
+
}
|
|
67
|
+
const [contractName, contract] = entries[0];
|
|
68
|
+
const script = contract?.compiled?.bytecode;
|
|
69
|
+
const stateSpan = contract?.compiled?.state_span;
|
|
70
|
+
if (!Array.isArray(script)) {
|
|
71
|
+
throw new Error(`${rawArtifact?.contract_name || "contract"} artifact is missing compiled bytecode`);
|
|
72
|
+
}
|
|
73
|
+
const abi = Object.entries(contract.entries || {}).map(([name, entry]) => ({
|
|
74
|
+
name,
|
|
75
|
+
inputs: (entry.params || []).map((param) => ({
|
|
76
|
+
name: param.name,
|
|
77
|
+
type_name: portableTypeName(param.type),
|
|
78
|
+
})),
|
|
79
|
+
dispatch_tag: entry.dispatch_tag,
|
|
80
|
+
}));
|
|
81
|
+
return {
|
|
82
|
+
...rawArtifact,
|
|
83
|
+
contract_name: contractName,
|
|
84
|
+
bytecode: Array.from(script, Number),
|
|
85
|
+
script: Array.from(script, Number),
|
|
86
|
+
state_layout: {
|
|
87
|
+
start: stateSpan?.offset,
|
|
88
|
+
len: stateSpan?.len,
|
|
89
|
+
},
|
|
90
|
+
abi,
|
|
91
|
+
without_selector: false,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function portableTypeName(type) {
|
|
95
|
+
if (!type?.kind)
|
|
96
|
+
throw new Error("portable ABI param is missing type kind");
|
|
97
|
+
switch (type.kind) {
|
|
98
|
+
case "bool":
|
|
99
|
+
case "byte":
|
|
100
|
+
case "int":
|
|
101
|
+
case "pubkey":
|
|
102
|
+
case "sig":
|
|
103
|
+
case "datasig":
|
|
104
|
+
return type.kind;
|
|
105
|
+
case "bytes":
|
|
106
|
+
return "byte[]";
|
|
107
|
+
case "fixed_bytes":
|
|
108
|
+
return `byte[${type.len}]`;
|
|
109
|
+
case "dynamic_array":
|
|
110
|
+
return `${portableTypeName(type.item)}[]`;
|
|
111
|
+
case "fixed_array":
|
|
112
|
+
return `${portableTypeName(type.item)}[${type.len}]`;
|
|
113
|
+
case "struct":
|
|
114
|
+
return type.name;
|
|
115
|
+
default:
|
|
116
|
+
throw new Error(`unsupported portable ABI type kind: ${type.kind}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function canonicalFunctionSignature(abiEntry) {
|
|
120
|
+
if (!abiEntry?.name || !Array.isArray(abiEntry.inputs)) {
|
|
121
|
+
throw new Error("invalid KCC1 ABI entry");
|
|
122
|
+
}
|
|
123
|
+
return `${abiEntry.name}(${abiEntry.inputs.map((input) => input.type_name).join(",")})`;
|
|
124
|
+
}
|
|
125
|
+
function dispatchTag(abiEntry) {
|
|
126
|
+
return (0, blake3_1.blake3)(new TextEncoder().encode(canonicalFunctionSignature(abiEntry))).slice(0, 4);
|
|
127
|
+
}
|
|
128
|
+
function dispatchTagFor(artifact, entrypointName) {
|
|
129
|
+
const entry = artifact?.abi?.find((candidate) => candidate.name === entrypointName);
|
|
130
|
+
if (!entry)
|
|
131
|
+
throw new Error(`artifact is missing ${entrypointName} ABI entry`);
|
|
132
|
+
if (typeof entry.dispatch_tag === "string" &&
|
|
133
|
+
/^[0-9a-fA-F]{8}$/.test(entry.dispatch_tag)) {
|
|
134
|
+
return hexBytes(entry.dispatch_tag);
|
|
135
|
+
}
|
|
136
|
+
return dispatchTag(entry);
|
|
137
|
+
}
|
|
138
|
+
function templateHash(prefix, suffix) {
|
|
139
|
+
return (0, blake3_1.blake3)(concatBytes(unsignedLe64(BigInt(prefix.length)), Uint8Array.from(prefix), unsignedLe64(BigInt(suffix.length)), Uint8Array.from(suffix)));
|
|
140
|
+
}
|
|
141
|
+
function templateParts(artifact) {
|
|
142
|
+
const normalized = normalizeSilverScriptArtifact(artifact);
|
|
143
|
+
const script = Uint8Array.from(normalized.script);
|
|
144
|
+
const start = normalized.state_layout?.start;
|
|
145
|
+
const length = normalized.state_layout?.len;
|
|
146
|
+
if (!Number.isInteger(start) ||
|
|
147
|
+
!Number.isInteger(length) ||
|
|
148
|
+
start < 0 ||
|
|
149
|
+
length < 0 ||
|
|
150
|
+
start + length > script.length) {
|
|
151
|
+
throw new Error(`${normalized.contract_name || "contract"} artifact has invalid state_layout`);
|
|
152
|
+
}
|
|
153
|
+
const prefix = script.slice(0, start);
|
|
154
|
+
const suffix = script.slice(start + length);
|
|
155
|
+
return {
|
|
156
|
+
prefix,
|
|
157
|
+
suffix,
|
|
158
|
+
prefixLength: prefix.length,
|
|
159
|
+
suffixLength: suffix.length,
|
|
160
|
+
hash: templateHash(prefix, suffix),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function mintExtensionCommitment(extension) {
|
|
164
|
+
const { kind = 1, remainingSupply, publicMintActive } = extension;
|
|
165
|
+
const kindValue = Number(kind);
|
|
166
|
+
if (!Number.isInteger(kindValue) || kindValue < 0 || kindValue > 255)
|
|
167
|
+
throw new Error("mint extension kind must be a byte");
|
|
168
|
+
return (0, blake3_1.blake3)(concatBytes(Uint8Array.of(kindValue), requireBytes(extension.creator, 32, "creator"), requireBytes(extension.ticker, 32, "ticker"), requireBytes(extension.name, 32, "name"), signedI64Payload(BigInt(extension.displayScale)), signedI64Payload(BigInt(extension.maxSupply)), signedI64Payload(BigInt(extension.mintLaneCount ?? 1)), Uint8Array.of(requireByte(extension.mintPolicy, "mintPolicy")), signedI64Payload(BigInt(extension.mintPriceSompi)), requireBytes(extension.treasury, 32, "treasury"), requireBytes(extension.protocolFeeRecipient, 32, "protocolFeeRecipient"), signedI64Payload(BigInt(extension.protocolFeeBps)), signedI64Payload(BigInt(remainingSupply)), Uint8Array.of(publicMintActive ? 1 : 0), requireBytes(extension.holderExtensionCommitment, 32, "holderExtensionCommitment")));
|
|
169
|
+
}
|
|
170
|
+
function holderExtensionCommitment(extension) {
|
|
171
|
+
const { kind = 1 } = extension;
|
|
172
|
+
return (0, blake3_1.blake3)(concatBytes(new TextEncoder().encode("KASPACOM/KCC20/HOLDER/V1"), Uint8Array.of(requireByte(kind, "kind")), requireBytes(extension.creator, 32, "creator"), requireBytes(extension.ticker, 32, "ticker"), requireBytes(extension.name, 32, "name"), signedI64Payload(BigInt(extension.displayScale)), signedI64Payload(BigInt(extension.maxSupply)), signedI64Payload(BigInt(extension.mintLaneCount ?? 1)), Uint8Array.of(requireByte(extension.mintPolicy, "mintPolicy")), signedI64Payload(BigInt(extension.mintPriceSompi)), requireBytes(extension.treasury, 32, "treasury"), requireBytes(extension.protocolFeeRecipient, 32, "protocolFeeRecipient"), signedI64Payload(BigInt(extension.protocolFeeBps))));
|
|
173
|
+
}
|
|
174
|
+
function buildKcc20ScriptForState(artifact, state) {
|
|
175
|
+
const normalized = normalizeSilverScriptArtifact(artifact);
|
|
176
|
+
const script = Uint8Array.from(normalized.script);
|
|
177
|
+
const start = normalized.state_layout?.start;
|
|
178
|
+
const length = normalized.state_layout?.len;
|
|
179
|
+
const encodedState = encodeKcc20State(state);
|
|
180
|
+
if (encodedState.length !== length) {
|
|
181
|
+
throw new Error(`KCC20 encoded state is ${encodedState.length} bytes, artifact requires ${length}`);
|
|
182
|
+
}
|
|
183
|
+
return concatBytes(script.slice(0, start), encodedState, script.slice(start + length));
|
|
184
|
+
}
|
|
185
|
+
function encodeKcc20State(state) {
|
|
186
|
+
return concatBytes(pushExplicit(signedI64Payload(BigInt(state.amount))), pushExplicit(requireBytes(state.owner, 32, "owner")), pushExplicit(Uint8Array.of(requireByte(state.ownerScheme, "ownerScheme"))), pushExplicit(Uint8Array.of(requireByte(state.borrowScheme, "borrowScheme"))), pushExplicit(requireBytes(state.borrowGuard, 32, "borrowGuard")), pushExplicit(requireBytes(state.extensionCommitment, 32, "extensionCommitment")));
|
|
187
|
+
}
|
|
188
|
+
function encodeKcc20StateRecordArrays(states) {
|
|
189
|
+
if (!Array.isArray(states))
|
|
190
|
+
throw new Error("KCC20 states must be an array");
|
|
191
|
+
return [
|
|
192
|
+
concatBytes(...states.map((state) => signedI64Payload(BigInt(state.amount)))),
|
|
193
|
+
concatBytes(...states.map((state) => requireBytes(state.owner, 32, "owner"))),
|
|
194
|
+
Uint8Array.from(states.map((state) => requireByte(state.ownerScheme, "ownerScheme"))),
|
|
195
|
+
Uint8Array.from(states.map((state) => requireByte(state.borrowScheme, "borrowScheme"))),
|
|
196
|
+
concatBytes(...states.map((state) => requireBytes(state.borrowGuard, 32, "borrowGuard"))),
|
|
197
|
+
concatBytes(...states.map((state) => requireBytes(state.extensionCommitment, 32, "extensionCommitment"))),
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
function buildKcc20TransferSigScript(kw, artifact, { nextStates, witness }) {
|
|
201
|
+
const builder = new kw.ScriptBuilder();
|
|
202
|
+
addKcc20StateRecordArrays(builder, nextStates);
|
|
203
|
+
builder.addData(Uint8Array.from(witness));
|
|
204
|
+
builder.addData(dispatchTagFor(artifact, "transfer"));
|
|
205
|
+
return builder.drain();
|
|
206
|
+
}
|
|
207
|
+
function buildKcc20TransferDelegatorSigScript(kw, artifact, { witness }) {
|
|
208
|
+
const builder = new kw.ScriptBuilder();
|
|
209
|
+
builder.addData(Uint8Array.from(witness));
|
|
210
|
+
builder.addData(dispatchTagFor(artifact, "transfer_delegator"));
|
|
211
|
+
return builder.drain();
|
|
212
|
+
}
|
|
213
|
+
function buildKcc20MintByOwnerSigScript(kw, artifact, args) {
|
|
214
|
+
const builder = new kw.ScriptBuilder();
|
|
215
|
+
addKcc20MintExtension(builder, args.extension);
|
|
216
|
+
builder.addData(Uint8Array.from(args.authoritySignature));
|
|
217
|
+
addMintDestination(builder, args);
|
|
218
|
+
builder.addData(dispatchTagFor(artifact, "mint_by_owner"));
|
|
219
|
+
return builder.drain();
|
|
220
|
+
}
|
|
221
|
+
function buildKcc20MintPublicSigScript(kw, artifact, args) {
|
|
222
|
+
const builder = new kw.ScriptBuilder();
|
|
223
|
+
addKcc20MintExtension(builder, args.extension);
|
|
224
|
+
addMintDestination(builder, args);
|
|
225
|
+
builder.addData(dispatchTagFor(artifact, "mint_public"));
|
|
226
|
+
return builder.drain();
|
|
227
|
+
}
|
|
228
|
+
function buildKcc20BurnSigScript(kw, artifact, { nextStates, burnAmount, witness }) {
|
|
229
|
+
const builder = new kw.ScriptBuilder();
|
|
230
|
+
addKcc20StateRecordArrays(builder, nextStates);
|
|
231
|
+
builder.addI64(BigInt(burnAmount));
|
|
232
|
+
builder.addData(Uint8Array.from(witness));
|
|
233
|
+
builder.addData(dispatchTagFor(artifact, "burn"));
|
|
234
|
+
return builder.drain();
|
|
235
|
+
}
|
|
236
|
+
function buildKcc20SetPublicMintActiveSigScript(kw, artifact, { extension, authoritySignature, active, minterOutputIndex }) {
|
|
237
|
+
const builder = new kw.ScriptBuilder();
|
|
238
|
+
addKcc20MintExtension(builder, extension);
|
|
239
|
+
builder.addData(Uint8Array.from(authoritySignature));
|
|
240
|
+
builder.addI64(active ? 1n : 0n);
|
|
241
|
+
builder.addI64(BigInt(minterOutputIndex));
|
|
242
|
+
builder.addData(dispatchTagFor(artifact, "set_public_mint_active"));
|
|
243
|
+
return builder.drain();
|
|
244
|
+
}
|
|
245
|
+
function p2pkOwnerWitness(signature) {
|
|
246
|
+
const bytes = Uint8Array.from(signature);
|
|
247
|
+
if (bytes.length !== 65)
|
|
248
|
+
throw new Error("P2PK Schnorr signature must be 65 bytes");
|
|
249
|
+
return ownerAuthorizationWitness(bytes);
|
|
250
|
+
}
|
|
251
|
+
function ownerAuthorizationWitness(witness) {
|
|
252
|
+
return concatBytes(Uint8Array.of(0), Uint8Array.from(witness));
|
|
253
|
+
}
|
|
254
|
+
function addKcc20StateRecordArrays(builder, states) {
|
|
255
|
+
for (const encodedField of encodeKcc20StateRecordArrays(states))
|
|
256
|
+
builder.addData(encodedField);
|
|
257
|
+
}
|
|
258
|
+
function addKcc20MintExtension(builder, extension) {
|
|
259
|
+
addExplicitByte(builder, extension.kind ?? 1, "mint extension kind");
|
|
260
|
+
builder.addData(requireBytes(extension.creator, 32, "creator"));
|
|
261
|
+
builder.addData(requireBytes(extension.ticker, 32, "ticker"));
|
|
262
|
+
builder.addData(requireBytes(extension.name, 32, "name"));
|
|
263
|
+
builder.addI64(BigInt(extension.displayScale));
|
|
264
|
+
builder.addI64(BigInt(extension.maxSupply));
|
|
265
|
+
builder.addI64(BigInt(extension.mintLaneCount ?? 1));
|
|
266
|
+
addExplicitByte(builder, extension.mintPolicy, "mintPolicy");
|
|
267
|
+
builder.addI64(BigInt(extension.mintPriceSompi));
|
|
268
|
+
builder.addData(requireBytes(extension.treasury, 32, "treasury"));
|
|
269
|
+
builder.addData(requireBytes(extension.protocolFeeRecipient, 32, "protocolFeeRecipient"));
|
|
270
|
+
builder.addI64(BigInt(extension.protocolFeeBps));
|
|
271
|
+
builder.addI64(BigInt(extension.remainingSupply));
|
|
272
|
+
builder.addI64(extension.publicMintActive ? 1n : 0n);
|
|
273
|
+
builder.addData(requireBytes(extension.holderExtensionCommitment, 32, "holderExtensionCommitment"));
|
|
274
|
+
}
|
|
275
|
+
function addMintDestination(builder, args) {
|
|
276
|
+
builder.addData(requireBytes(args.toOwner, 32, "toOwner"));
|
|
277
|
+
addExplicitByte(builder, args.toOwnerScheme, "toOwnerScheme");
|
|
278
|
+
addExplicitByte(builder, args.toBorrowScheme, "toBorrowScheme");
|
|
279
|
+
builder.addData(requireBytes(args.toBorrowGuard, 32, "toBorrowGuard"));
|
|
280
|
+
builder.addI64(BigInt(args.tokenAmount));
|
|
281
|
+
builder.addI64(BigInt(args.tokenOutputIndex));
|
|
282
|
+
builder.addI64(BigInt(args.minterOutputIndex));
|
|
283
|
+
builder.addI64(BigInt(args.treasuryOutputIndex));
|
|
284
|
+
builder.addI64(BigInt(args.feeOutputIndex));
|
|
285
|
+
}
|
|
286
|
+
function addExplicitByte(builder, value, label) {
|
|
287
|
+
const byte = requireByte(value, label);
|
|
288
|
+
builder.addData(Uint8Array.of(byte));
|
|
289
|
+
}
|
|
290
|
+
function signedI64Payload(value) {
|
|
291
|
+
const n = BigInt(value);
|
|
292
|
+
if (n < MIN_I64 || n > MAX_I64)
|
|
293
|
+
throw new Error(`KCC1 int is outside signed 64-bit range: ${n}`);
|
|
294
|
+
const negative = n < 0n;
|
|
295
|
+
let magnitude = negative ? -n : n;
|
|
296
|
+
const out = new Uint8Array(8);
|
|
297
|
+
for (let i = 0; i < out.length; i++) {
|
|
298
|
+
out[i] = Number(magnitude & 0xffn);
|
|
299
|
+
magnitude >>= 8n;
|
|
300
|
+
}
|
|
301
|
+
if (negative)
|
|
302
|
+
out[7] |= 0x80;
|
|
303
|
+
return out;
|
|
304
|
+
}
|
|
305
|
+
function unsignedLe64(value) {
|
|
306
|
+
let n = BigInt(value);
|
|
307
|
+
if (n < 0n || n > 0xffffffffffffffffn) {
|
|
308
|
+
throw new Error(`KCC1 length is outside unsigned 64-bit range: ${n}`);
|
|
309
|
+
}
|
|
310
|
+
const out = new Uint8Array(8);
|
|
311
|
+
for (let i = 0; i < out.length; i++) {
|
|
312
|
+
out[i] = Number(n & 0xffn);
|
|
313
|
+
n >>= 8n;
|
|
314
|
+
}
|
|
315
|
+
return out;
|
|
316
|
+
}
|
|
317
|
+
function pushExplicit(payload) {
|
|
318
|
+
const bytes = Uint8Array.from(payload);
|
|
319
|
+
if (bytes.length === 0)
|
|
320
|
+
return Uint8Array.of(0x00);
|
|
321
|
+
if (bytes.length <= 75)
|
|
322
|
+
return concatBytes(Uint8Array.of(bytes.length), bytes);
|
|
323
|
+
if (bytes.length <= 0xff)
|
|
324
|
+
return concatBytes(Uint8Array.of(0x4c, bytes.length), bytes);
|
|
325
|
+
if (bytes.length <= 0xffff) {
|
|
326
|
+
return concatBytes(Uint8Array.of(0x4d, bytes.length & 0xff, bytes.length >> 8), bytes);
|
|
327
|
+
}
|
|
328
|
+
throw new Error(`explicit payload is too large: ${bytes.length}`);
|
|
329
|
+
}
|
|
330
|
+
function concatBytes(...parts) {
|
|
331
|
+
const length = parts.reduce((sum, part) => sum + part.length, 0);
|
|
332
|
+
const out = new Uint8Array(length);
|
|
333
|
+
let offset = 0;
|
|
334
|
+
for (const part of parts) {
|
|
335
|
+
out.set(part, offset);
|
|
336
|
+
offset += part.length;
|
|
337
|
+
}
|
|
338
|
+
return out;
|
|
339
|
+
}
|
|
340
|
+
function requireByte(value, label) {
|
|
341
|
+
const parsed = Number(value);
|
|
342
|
+
if (!Number.isInteger(parsed) || parsed < 0 || parsed > 255)
|
|
343
|
+
throw new Error(`${label} must be a byte`);
|
|
344
|
+
return parsed;
|
|
345
|
+
}
|
|
346
|
+
function requireBytes(value, length, label) {
|
|
347
|
+
const bytes = typeof value === "string"
|
|
348
|
+
? hexBytes(value)
|
|
349
|
+
: value instanceof Uint8Array
|
|
350
|
+
? value
|
|
351
|
+
: Array.isArray(value)
|
|
352
|
+
? Uint8Array.from(value)
|
|
353
|
+
: null;
|
|
354
|
+
if (!bytes) {
|
|
355
|
+
throw new Error(`${label} must be ${length} bytes or hex`);
|
|
356
|
+
}
|
|
357
|
+
if (bytes.length !== length)
|
|
358
|
+
throw new Error(`${label} must be ${length} bytes`);
|
|
359
|
+
return bytes;
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/abi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface Kcc20IndexedCovenantUtxo {
|
|
2
|
+
[field: string]: unknown;
|
|
3
|
+
txidHex: string;
|
|
4
|
+
vout: number;
|
|
5
|
+
outpoint?: string;
|
|
6
|
+
address: string;
|
|
7
|
+
amountSompi: string;
|
|
8
|
+
action?: string;
|
|
9
|
+
state: Record<string, unknown> | null;
|
|
10
|
+
/** Native covenant id, when the host enriched it from Kaspa RPC. */
|
|
11
|
+
covenantId?: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface Kcc20HolderUtxoSummary {
|
|
14
|
+
requestedAmount: string;
|
|
15
|
+
aggregateAmount: string;
|
|
16
|
+
maxSingleUtxoAmount: string;
|
|
17
|
+
utxoCount: number;
|
|
18
|
+
fragmented: boolean;
|
|
19
|
+
maxSingleUtxoOutpoint?: string;
|
|
20
|
+
recommendedAction?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface Kcc20WrapperSourceInfo {
|
|
23
|
+
wrapperId: string;
|
|
24
|
+
marketId: string;
|
|
25
|
+
canonicalTokenId?: string | null;
|
|
26
|
+
contractCanonicalTokenId?: string | null;
|
|
27
|
+
activeCovenantId?: string | null;
|
|
28
|
+
wrapperAddress?: string | null;
|
|
29
|
+
feeTicketId?: string | null;
|
|
30
|
+
feeTicketSupported?: boolean;
|
|
31
|
+
enabled?: boolean;
|
|
32
|
+
claimedCanonicalTokenId?: string | null;
|
|
33
|
+
pendingReveal?: boolean;
|
|
34
|
+
activeUtxos?: number | null;
|
|
35
|
+
buildable?: boolean;
|
|
36
|
+
buildableReason?: string | null;
|
|
37
|
+
}
|
|
38
|
+
export interface Kcc20ActiveWrapperResolution {
|
|
39
|
+
selected?: Kcc20IndexedCovenantUtxo;
|
|
40
|
+
candidates: Kcc20IndexedCovenantUtxo[];
|
|
41
|
+
ambiguous: boolean;
|
|
42
|
+
activeCovenantId?: string | null;
|
|
43
|
+
}
|
|
44
|
+
export interface Kcc20FeeTicketOutpointLike {
|
|
45
|
+
outpoint: string;
|
|
46
|
+
amountSompi: string;
|
|
47
|
+
}
|
|
48
|
+
export declare const KCC20_MIN_CONSOLIDATION_INPUTS = 2;
|
|
49
|
+
export declare const KCC20_MAX_CONSOLIDATION_INPUTS = 8;
|
|
50
|
+
export declare function kcc20IndexedUtxoOutpoint(utxo: Pick<Kcc20IndexedCovenantUtxo, "txidHex" | "vout" | "outpoint">): string;
|
|
51
|
+
export declare function normalizeKcc20IndexedUtxos(values: readonly unknown[]): Kcc20IndexedCovenantUtxo[];
|
|
52
|
+
export declare function selectActiveMinterUtxo(utxos: readonly Kcc20IndexedCovenantUtxo[], requestedAmount: string): Kcc20IndexedCovenantUtxo | null;
|
|
53
|
+
export declare function ownerNativeHolderUtxos(utxos: readonly Kcc20IndexedCovenantUtxo[], owner: string): Kcc20IndexedCovenantUtxo[];
|
|
54
|
+
export declare function selectOwnerNativeHolderUtxo(utxos: readonly Kcc20IndexedCovenantUtxo[], owner: string, requestedAmount: string, outpoint?: string): Kcc20IndexedCovenantUtxo | null;
|
|
55
|
+
export declare function ownerWrappedHolderUtxos(utxos: readonly Kcc20IndexedCovenantUtxo[], owner: string, canonicalTokenId: string): Kcc20IndexedCovenantUtxo[];
|
|
56
|
+
export declare function selectOwnerWrappedHolderUtxo(utxos: readonly Kcc20IndexedCovenantUtxo[], owner: string, requestedAmount: string, canonicalTokenId: string, largest?: boolean): Kcc20IndexedCovenantUtxo | null;
|
|
57
|
+
export declare function selectOwnerWrappedHolderUtxosForSweep(utxos: readonly Kcc20IndexedCovenantUtxo[], owner: string, requestedAmounts: readonly string[], canonicalTokenId: string): Kcc20IndexedCovenantUtxo[];
|
|
58
|
+
export declare function selectWrappedRootUtxo(utxos: readonly Kcc20IndexedCovenantUtxo[], canonicalTokenId: string): Kcc20IndexedCovenantUtxo | null;
|
|
59
|
+
export declare function selectWrappedOrderUtxo(utxos: readonly Kcc20IndexedCovenantUtxo[], input: {
|
|
60
|
+
orderId: string;
|
|
61
|
+
mode: 2 | 3;
|
|
62
|
+
canonicalTokenId: string;
|
|
63
|
+
requestedAmount?: string;
|
|
64
|
+
unitPriceSompi?: string;
|
|
65
|
+
owner?: string;
|
|
66
|
+
}): Kcc20IndexedCovenantUtxo | null;
|
|
67
|
+
export declare function wrapperReserveUtxos(utxos: readonly Kcc20IndexedCovenantUtxo[], wrapperIds: readonly string[]): Kcc20IndexedCovenantUtxo[];
|
|
68
|
+
export declare function selectWrapperReserveUtxo(utxos: readonly Kcc20IndexedCovenantUtxo[], wrapperIds: readonly string[], requestedAmount: string): Kcc20IndexedCovenantUtxo | null;
|
|
69
|
+
export declare function resolveActiveWrapperUtxo(wrapper: Kcc20WrapperSourceInfo, utxos: readonly Kcc20IndexedCovenantUtxo[]): Kcc20ActiveWrapperResolution;
|
|
70
|
+
export declare function kcc20WrapperBelongsToToken(wrapper: Kcc20WrapperSourceInfo, canonicalTokenId: string): boolean;
|
|
71
|
+
export declare function isKcc20WrapperReadyToBuild(wrapper: Kcc20WrapperSourceInfo | null | undefined): boolean;
|
|
72
|
+
export declare function kcc20WrapperNotReadyReason(wrapper: Kcc20WrapperSourceInfo | null | undefined): string;
|
|
73
|
+
export declare function selectOwnerFeeTicketUtxos(utxos: readonly Kcc20IndexedCovenantUtxo[], owner: string, outpoints?: readonly string[]): Kcc20IndexedCovenantUtxo[];
|
|
74
|
+
export declare function selectFeeTicketOutpoints(tickets: readonly Kcc20FeeTicketOutpointLike[], quantity: number, options?: {
|
|
75
|
+
maxQuantity?: number;
|
|
76
|
+
shortageAction?: string;
|
|
77
|
+
}): string[];
|
|
78
|
+
export declare function selectConsolidationBatch(candidates: readonly Kcc20IndexedCovenantUtxo[], sourceOutpoints?: readonly string[], maximum?: number, order?: "smallest" | "largest", minimum?: number): Kcc20IndexedCovenantUtxo[];
|
|
79
|
+
export declare function summarizeHolderUtxos(candidates: readonly Kcc20IndexedCovenantUtxo[], requestedAmount: string): Kcc20HolderUtxoSummary;
|