@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
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KCC20_MIN_PAID_MINT_TREASURY_OUTPUT_SOMPI = exports.KCC20_RECOMMENDED_PAID_MINT_MIN_GROSS_SOMPI = exports.KCC20_VERIFY_PAID_MINT_MIN_GROSS_SOMPI = exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI = void 0;
|
|
4
|
+
exports.kcc20PaidMintCapacityMeetsMinimumGross = kcc20PaidMintCapacityMeetsMinimumGross;
|
|
5
|
+
exports.kcc20PaidMintExactGrossSompi = kcc20PaidMintExactGrossSompi;
|
|
6
|
+
exports.kcc20PaidMintAmountStep = kcc20PaidMintAmountStep;
|
|
7
|
+
exports.kcc20SnapPaidMintAmountUp = kcc20SnapPaidMintAmountUp;
|
|
8
|
+
exports.kcc20MinimumPaidMintAmount = kcc20MinimumPaidMintAmount;
|
|
9
|
+
exports.kcc20ValidatePaidMintAmount = kcc20ValidatePaidMintAmount;
|
|
10
|
+
exports.kcc20PaidMintFeeSplit = kcc20PaidMintFeeSplit;
|
|
11
|
+
exports.buildKcc20PaidMintAmountQuote = buildKcc20PaidMintAmountQuote;
|
|
12
|
+
exports.kcc20MinimumSafePaidMintAmount = kcc20MinimumSafePaidMintAmount;
|
|
13
|
+
exports.isKcc20SafePaidMintGross = isKcc20SafePaidMintGross;
|
|
14
|
+
exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI = 50000000n;
|
|
15
|
+
exports.KCC20_VERIFY_PAID_MINT_MIN_GROSS_SOMPI = 100000000n;
|
|
16
|
+
exports.KCC20_RECOMMENDED_PAID_MINT_MIN_GROSS_SOMPI = 55000000n;
|
|
17
|
+
exports.KCC20_MIN_PAID_MINT_TREASURY_OUTPUT_SOMPI = 2003085n;
|
|
18
|
+
const KCC20_FEE_DENOMINATOR_BPS = 10000n;
|
|
19
|
+
const KCC20_PAID_MINT_GROSS_SEARCH_MAX_DOUBLINGS = 64;
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether all remaining paid-mint supply can produce at least the
|
|
22
|
+
* required gross amount. The comparison is cross-multiplied so fractional
|
|
23
|
+
* display scales are handled without rounding or floating-point arithmetic.
|
|
24
|
+
*/
|
|
25
|
+
function kcc20PaidMintCapacityMeetsMinimumGross(input) {
|
|
26
|
+
assertPositivePriceScale(input.priceScale);
|
|
27
|
+
if (input.unitPriceSompi <= 0n)
|
|
28
|
+
return true;
|
|
29
|
+
if (input.remainingTokenAmount <= 0n)
|
|
30
|
+
return false;
|
|
31
|
+
const minimumGrossSompi = input.minimumGrossSompi ?? exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI;
|
|
32
|
+
if (minimumGrossSompi < 0n) {
|
|
33
|
+
throw new Error("minimumGrossSompi must not be negative");
|
|
34
|
+
}
|
|
35
|
+
return (input.remainingTokenAmount * input.unitPriceSompi >=
|
|
36
|
+
minimumGrossSompi * input.priceScale);
|
|
37
|
+
}
|
|
38
|
+
function kcc20PaidMintExactGrossSompi(input) {
|
|
39
|
+
if (input.unitPriceSompi <= 0n) {
|
|
40
|
+
return 0n;
|
|
41
|
+
}
|
|
42
|
+
assertPositivePriceScale(input.priceScale);
|
|
43
|
+
const numerator = input.tokenAmount * input.unitPriceSompi;
|
|
44
|
+
const remainder = numerator % input.priceScale;
|
|
45
|
+
if (remainder !== 0n) {
|
|
46
|
+
throw new Error(`paid mint amount is not valid for token decimals: tokenAmount=${input.tokenAmount} unitPriceSompi=${input.unitPriceSompi} priceScale=${input.priceScale}`);
|
|
47
|
+
}
|
|
48
|
+
return numerator / input.priceScale;
|
|
49
|
+
}
|
|
50
|
+
function kcc20PaidMintAmountStep(unitPriceSompi, priceScale) {
|
|
51
|
+
if (unitPriceSompi <= 0n) {
|
|
52
|
+
return 1n;
|
|
53
|
+
}
|
|
54
|
+
assertPositivePriceScale(priceScale);
|
|
55
|
+
return priceScale / gcd(priceScale, unitPriceSompi);
|
|
56
|
+
}
|
|
57
|
+
function kcc20SnapPaidMintAmountUp(input) {
|
|
58
|
+
const step = kcc20PaidMintAmountStep(input.unitPriceSompi, input.priceScale);
|
|
59
|
+
const remainder = input.tokenAmount % step;
|
|
60
|
+
return remainder === 0n
|
|
61
|
+
? input.tokenAmount
|
|
62
|
+
: input.tokenAmount + step - remainder;
|
|
63
|
+
}
|
|
64
|
+
function kcc20MinimumPaidMintAmount(input) {
|
|
65
|
+
if (input.unitPriceSompi <= 0n) {
|
|
66
|
+
return input.priceScale;
|
|
67
|
+
}
|
|
68
|
+
const minGrossSompi = input.minGrossSompi ?? exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI;
|
|
69
|
+
const minimumAmountAtProtocolFloor = kcc20SnapPaidMintAmountUp({
|
|
70
|
+
tokenAmount: ceilDiv(minGrossSompi * input.priceScale, input.unitPriceSompi),
|
|
71
|
+
unitPriceSompi: input.unitPriceSompi,
|
|
72
|
+
priceScale: input.priceScale,
|
|
73
|
+
});
|
|
74
|
+
if (normalizeFeeBps(input.protocolFeeBps) >= Number(KCC20_FEE_DENOMINATOR_BPS)) {
|
|
75
|
+
return minimumAmountAtProtocolFloor;
|
|
76
|
+
}
|
|
77
|
+
const wholeDisplayTokens = ceilDiv(minimumAmountAtProtocolFloor, input.priceScale);
|
|
78
|
+
return kcc20SnapPaidMintAmountUp({
|
|
79
|
+
tokenAmount: wholeDisplayTokens * input.priceScale,
|
|
80
|
+
unitPriceSompi: input.unitPriceSompi,
|
|
81
|
+
priceScale: input.priceScale,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function kcc20ValidatePaidMintAmount(input) {
|
|
85
|
+
const grossSompi = kcc20PaidMintExactGrossSompi(input);
|
|
86
|
+
const minGrossSompi = input.minGrossSompi ?? exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI;
|
|
87
|
+
if (grossSompi > 0n && grossSompi < minGrossSompi) {
|
|
88
|
+
throw new Error(`paid mint gross ${formatSompiAsKas(grossSompi)} KAS is below ${input.minimumGrossLabel ?? "minimum protocol fee"} ${formatSompiAsKas(minGrossSompi)} KAS`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function kcc20PaidMintFeeSplit(grossSompi, protocolFeeBps, minGrossSompi = exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI) {
|
|
92
|
+
if (grossSompi <= 0n) {
|
|
93
|
+
return { fee: 0n, net: 0n };
|
|
94
|
+
}
|
|
95
|
+
const bps = normalizeFeeBps(protocolFeeBps);
|
|
96
|
+
const percentageFee = (grossSompi * BigInt(bps)) / KCC20_FEE_DENOMINATOR_BPS;
|
|
97
|
+
const fee = percentageFee < minGrossSompi ? minGrossSompi : percentageFee;
|
|
98
|
+
return { fee, net: grossSompi - fee };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Produces a transaction-safe paid-mint amount. It enforces exact sompi,
|
|
102
|
+
* protocol-fee, and non-zero treasury-output dust constraints in one place.
|
|
103
|
+
*/
|
|
104
|
+
function buildKcc20PaidMintAmountQuote(input) {
|
|
105
|
+
if (input.tokenAmount <= 0n || input.unitPriceSompi < 0n)
|
|
106
|
+
return undefined;
|
|
107
|
+
assertPositivePriceScale(input.priceScale);
|
|
108
|
+
if (input.unitPriceSompi === 0n) {
|
|
109
|
+
return {
|
|
110
|
+
tokenAmount: input.tokenAmount,
|
|
111
|
+
adjustedTokenAmount: input.tokenAmount,
|
|
112
|
+
grossSompi: 0n,
|
|
113
|
+
adjusted: false,
|
|
114
|
+
belowMinimumGross: false,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
const minimumGrossSompi = input.minimumGrossSompi ?? exports.KCC20_RECOMMENDED_PAID_MINT_MIN_GROSS_SOMPI;
|
|
118
|
+
const step = kcc20PaidMintAmountStep(input.unitPriceSompi, input.priceScale);
|
|
119
|
+
let adjustedTokenAmount = roundUpToStep(input.tokenAmount, step);
|
|
120
|
+
const typedGrossSompi = kcc20PaidMintExactGrossSompi({
|
|
121
|
+
...input,
|
|
122
|
+
tokenAmount: adjustedTokenAmount,
|
|
123
|
+
});
|
|
124
|
+
if (typedGrossSompi < minimumGrossSompi) {
|
|
125
|
+
return {
|
|
126
|
+
tokenAmount: input.tokenAmount,
|
|
127
|
+
adjustedTokenAmount,
|
|
128
|
+
grossSompi: typedGrossSompi,
|
|
129
|
+
adjusted: adjustedTokenAmount !== input.tokenAmount,
|
|
130
|
+
belowMinimumGross: true,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const feeBps = normalizeUiFeeBps(input.protocolFeeBps);
|
|
134
|
+
if (!isKcc20SafePaidMintGross(typedGrossSompi, feeBps)) {
|
|
135
|
+
const safeTokenAmount = feeBps < Number(KCC20_FEE_DENOMINATOR_BPS)
|
|
136
|
+
? snapPaidMintToSafeWholeTokens(adjustedTokenAmount, input.unitPriceSompi, input.priceScale, step, feeBps)
|
|
137
|
+
: snapPaidMintToSafeExact(adjustedTokenAmount, input.unitPriceSompi, input.priceScale, step, feeBps);
|
|
138
|
+
if (safeTokenAmount === undefined)
|
|
139
|
+
return undefined;
|
|
140
|
+
adjustedTokenAmount = safeTokenAmount;
|
|
141
|
+
}
|
|
142
|
+
const grossSompi = kcc20PaidMintExactGrossSompi({
|
|
143
|
+
...input,
|
|
144
|
+
tokenAmount: adjustedTokenAmount,
|
|
145
|
+
});
|
|
146
|
+
if (!isKcc20SafePaidMintGross(grossSompi, feeBps))
|
|
147
|
+
return undefined;
|
|
148
|
+
return {
|
|
149
|
+
tokenAmount: input.tokenAmount,
|
|
150
|
+
adjustedTokenAmount,
|
|
151
|
+
grossSompi,
|
|
152
|
+
adjusted: adjustedTokenAmount !== input.tokenAmount,
|
|
153
|
+
belowMinimumGross: false,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function kcc20MinimumSafePaidMintAmount(input) {
|
|
157
|
+
if (input.unitPriceSompi <= 0n)
|
|
158
|
+
return undefined;
|
|
159
|
+
const minimumGrossSompi = input.minimumGrossSompi ?? exports.KCC20_RECOMMENDED_PAID_MINT_MIN_GROSS_SOMPI;
|
|
160
|
+
const minimum = kcc20SnapPaidMintAmountUp({
|
|
161
|
+
tokenAmount: ceilDiv(minimumGrossSompi * input.priceScale, input.unitPriceSompi),
|
|
162
|
+
unitPriceSompi: input.unitPriceSompi,
|
|
163
|
+
priceScale: input.priceScale,
|
|
164
|
+
});
|
|
165
|
+
const quote = buildKcc20PaidMintAmountQuote({
|
|
166
|
+
...input,
|
|
167
|
+
tokenAmount: minimum,
|
|
168
|
+
minimumGrossSompi,
|
|
169
|
+
});
|
|
170
|
+
return quote?.adjustedTokenAmount ?? minimum;
|
|
171
|
+
}
|
|
172
|
+
function isKcc20SafePaidMintGross(grossSompi, protocolFeeBps) {
|
|
173
|
+
if (grossSompi < exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI)
|
|
174
|
+
return false;
|
|
175
|
+
const split = kcc20PaidMintFeeSplit(grossSompi, normalizeUiFeeBps(protocolFeeBps));
|
|
176
|
+
return (split.net >= 0n &&
|
|
177
|
+
(split.net === 0n || split.net >= exports.KCC20_MIN_PAID_MINT_TREASURY_OUTPUT_SOMPI));
|
|
178
|
+
}
|
|
179
|
+
function snapPaidMintToSafeExact(start, price, scale, step, feeBps) {
|
|
180
|
+
let amount = start;
|
|
181
|
+
for (let index = 0; index < KCC20_PAID_MINT_GROSS_SEARCH_MAX_DOUBLINGS; index += 1) {
|
|
182
|
+
const gross = kcc20PaidMintExactGrossSompi({
|
|
183
|
+
tokenAmount: amount,
|
|
184
|
+
unitPriceSompi: price,
|
|
185
|
+
priceScale: scale,
|
|
186
|
+
});
|
|
187
|
+
if (isKcc20SafePaidMintGross(gross, feeBps))
|
|
188
|
+
return amount;
|
|
189
|
+
const nextGross = smallestSafePaidMintGrossSompi(gross + 1n, feeBps);
|
|
190
|
+
if (nextGross === undefined)
|
|
191
|
+
return undefined;
|
|
192
|
+
const next = roundUpToStep(ceilDiv(nextGross * scale, price), step);
|
|
193
|
+
amount = next > amount ? next : amount + step;
|
|
194
|
+
}
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
function snapPaidMintToSafeWholeTokens(start, price, scale, step, feeBps) {
|
|
198
|
+
let amount = roundUpToStep(ceilDiv(start, scale) * scale, step);
|
|
199
|
+
for (let index = 0; index < KCC20_PAID_MINT_GROSS_SEARCH_MAX_DOUBLINGS; index += 1) {
|
|
200
|
+
const gross = kcc20PaidMintExactGrossSompi({
|
|
201
|
+
tokenAmount: amount,
|
|
202
|
+
unitPriceSompi: price,
|
|
203
|
+
priceScale: scale,
|
|
204
|
+
});
|
|
205
|
+
if (isKcc20SafePaidMintGross(gross, feeBps))
|
|
206
|
+
return amount;
|
|
207
|
+
const nextGross = smallestSafePaidMintGrossSompi(gross + 1n, feeBps);
|
|
208
|
+
if (nextGross === undefined)
|
|
209
|
+
return undefined;
|
|
210
|
+
let next = roundUpToStep(ceilDiv(nextGross * scale, price), step);
|
|
211
|
+
next = roundUpToStep(ceilDiv(next, scale) * scale, step);
|
|
212
|
+
amount = next > amount ? next : roundUpToStep(amount + scale, step);
|
|
213
|
+
}
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
function smallestSafePaidMintGrossSompi(minimum, feeBps) {
|
|
217
|
+
let low = minimum < exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI
|
|
218
|
+
? exports.KCC20_PAID_MINT_MIN_GROSS_SOMPI
|
|
219
|
+
: minimum;
|
|
220
|
+
if (isKcc20SafePaidMintGross(low, feeBps))
|
|
221
|
+
return low;
|
|
222
|
+
let high = low + 1n;
|
|
223
|
+
for (let index = 0; index < KCC20_PAID_MINT_GROSS_SEARCH_MAX_DOUBLINGS; index += 1) {
|
|
224
|
+
if (isKcc20SafePaidMintGross(high, feeBps)) {
|
|
225
|
+
while (low + 1n < high) {
|
|
226
|
+
const middle = low + (high - low) / 2n;
|
|
227
|
+
if (isKcc20SafePaidMintGross(middle, feeBps))
|
|
228
|
+
high = middle;
|
|
229
|
+
else
|
|
230
|
+
low = middle;
|
|
231
|
+
}
|
|
232
|
+
return high;
|
|
233
|
+
}
|
|
234
|
+
high += high - low + 1n;
|
|
235
|
+
}
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
function normalizeUiFeeBps(value) {
|
|
239
|
+
return Number.isInteger(value) && value !== null && value !== undefined
|
|
240
|
+
? Math.min(10_000, Math.max(0, value))
|
|
241
|
+
: 200;
|
|
242
|
+
}
|
|
243
|
+
function roundUpToStep(value, step) {
|
|
244
|
+
const remainder = value % step;
|
|
245
|
+
return remainder === 0n ? value : value + step - remainder;
|
|
246
|
+
}
|
|
247
|
+
function normalizeFeeBps(value) {
|
|
248
|
+
if (value === null || value === undefined) {
|
|
249
|
+
return 200;
|
|
250
|
+
}
|
|
251
|
+
if (!Number.isInteger(value) || value < 0 || value > 10_000) {
|
|
252
|
+
throw new Error("protocolFeeBps must be 0..10000");
|
|
253
|
+
}
|
|
254
|
+
return value;
|
|
255
|
+
}
|
|
256
|
+
function ceilDiv(left, right) {
|
|
257
|
+
return (left + right - 1n) / right;
|
|
258
|
+
}
|
|
259
|
+
function assertPositivePriceScale(priceScale) {
|
|
260
|
+
if (priceScale <= 0n) {
|
|
261
|
+
throw new Error("paid mint priceScale must be greater than zero");
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
function formatSompiAsKas(value) {
|
|
265
|
+
const whole = value / 100000000n;
|
|
266
|
+
const fractional = value % 100000000n;
|
|
267
|
+
if (fractional === 0n)
|
|
268
|
+
return whole.toString();
|
|
269
|
+
return `${whole}.${fractional.toString().padStart(8, "0").replace(/0+$/, "")}`;
|
|
270
|
+
}
|
|
271
|
+
function gcd(left, right) {
|
|
272
|
+
let a = left < 0n ? -left : left;
|
|
273
|
+
let b = right < 0n ? -right : right;
|
|
274
|
+
while (b !== 0n) {
|
|
275
|
+
const remainder = a % b;
|
|
276
|
+
a = b;
|
|
277
|
+
b = remainder;
|
|
278
|
+
}
|
|
279
|
+
return a;
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=paid-mint-amount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paid-mint-amount.js","sourceRoot":"","sources":["../../src/paid-mint-amount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const SUBNETWORK_ID_NATIVE: "0000000000000000000000000000000000000000";
|
|
2
|
+
export declare const ZERO_HASH: "0000000000000000000000000000000000000000000000000000000000000000";
|
|
3
|
+
export declare const SOMPI_PER_TKAS = 100000000n;
|
|
4
|
+
export declare const DEFAULT_TOKEN_OUTPUT_SOMPI = 50000000n;
|
|
5
|
+
export declare const DEFAULT_COMPUTE_BUDGET = 200;
|
|
6
|
+
export declare const DEFAULT_KCC20_FEE_BPS = 200n;
|
|
7
|
+
export declare const DEFAULT_KCC20_MIN_PROTOCOL_FEE_SOMPI = 50000000n;
|
|
8
|
+
export declare const DEFAULT_KCC20_TOKEN_DECIMALS = 8;
|
|
9
|
+
export declare const KCC20_PUBLIC_MINT_MAX_DISPLAY_TOKENS = 100000n;
|
|
10
|
+
export declare const KCC20_PUBLIC_MINT_MAX_DISPLAY_TOKENS_LABEL = "100,000";
|
|
11
|
+
export declare const KCC20_TICKER_MAX_LENGTH = 12;
|
|
12
|
+
export declare const KCC20_TOKEN_NAME_MAX_LENGTH = 32;
|
|
13
|
+
export declare const KCC20_ORDERBOOK_MAX_SWEEP_BID_LEGS = 3;
|
|
14
|
+
export declare const KCC20_ORDERBOOK_MAX_EXPANDED_SWEEP_BID_LEGS = 10;
|
|
15
|
+
export declare const KCC20_ORDERBOOK_EXPANDED_SWEEP_OUTPUT_SOMPI = 200000000n;
|
|
16
|
+
export declare const DEFAULT_KCC20_PRICE_SCALE: bigint;
|
|
17
|
+
export declare const KCC20_MIN_PROTOCOL_FEE_SOMPI = 50000000n;
|
|
18
|
+
export declare const KCC20_DEFAULT_PROTOCOL_FEE_BPS = 200n;
|
|
19
|
+
export declare const KCC20_DEFAULT_PRICE_SCALE: bigint;
|
|
20
|
+
export declare const KCC20_PLATFORM_PROTOCOL_FEE_RECIPIENT: "ce2100e68197c8e695bd781d07e2bd5de7ed77f5a97668884190531bdc632c01";
|
|
21
|
+
export declare const KCC20_ORDERBOOK_PROTOCOL_FEE_RECIPIENT: "ce2100e68197c8e695bd781d07e2bd5de7ed77f5a97668884190531bdc632c01";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KCC20_ORDERBOOK_PROTOCOL_FEE_RECIPIENT = exports.KCC20_PLATFORM_PROTOCOL_FEE_RECIPIENT = exports.KCC20_DEFAULT_PRICE_SCALE = exports.KCC20_DEFAULT_PROTOCOL_FEE_BPS = exports.KCC20_MIN_PROTOCOL_FEE_SOMPI = exports.DEFAULT_KCC20_PRICE_SCALE = exports.KCC20_ORDERBOOK_EXPANDED_SWEEP_OUTPUT_SOMPI = exports.KCC20_ORDERBOOK_MAX_EXPANDED_SWEEP_BID_LEGS = exports.KCC20_ORDERBOOK_MAX_SWEEP_BID_LEGS = exports.KCC20_TOKEN_NAME_MAX_LENGTH = exports.KCC20_TICKER_MAX_LENGTH = exports.KCC20_PUBLIC_MINT_MAX_DISPLAY_TOKENS_LABEL = exports.KCC20_PUBLIC_MINT_MAX_DISPLAY_TOKENS = exports.DEFAULT_KCC20_TOKEN_DECIMALS = exports.DEFAULT_KCC20_MIN_PROTOCOL_FEE_SOMPI = exports.DEFAULT_KCC20_FEE_BPS = exports.DEFAULT_COMPUTE_BUDGET = exports.DEFAULT_TOKEN_OUTPUT_SOMPI = exports.SOMPI_PER_TKAS = exports.ZERO_HASH = exports.SUBNETWORK_ID_NATIVE = void 0;
|
|
4
|
+
exports.SUBNETWORK_ID_NATIVE = "0000000000000000000000000000000000000000";
|
|
5
|
+
exports.ZERO_HASH = "0000000000000000000000000000000000000000000000000000000000000000";
|
|
6
|
+
exports.SOMPI_PER_TKAS = 100000000n;
|
|
7
|
+
exports.DEFAULT_TOKEN_OUTPUT_SOMPI = 50000000n;
|
|
8
|
+
exports.DEFAULT_COMPUTE_BUDGET = 200;
|
|
9
|
+
exports.DEFAULT_KCC20_FEE_BPS = 200n;
|
|
10
|
+
exports.DEFAULT_KCC20_MIN_PROTOCOL_FEE_SOMPI = 50000000n;
|
|
11
|
+
exports.DEFAULT_KCC20_TOKEN_DECIMALS = 8;
|
|
12
|
+
exports.KCC20_PUBLIC_MINT_MAX_DISPLAY_TOKENS = 100000n;
|
|
13
|
+
exports.KCC20_PUBLIC_MINT_MAX_DISPLAY_TOKENS_LABEL = "100,000";
|
|
14
|
+
exports.KCC20_TICKER_MAX_LENGTH = 12;
|
|
15
|
+
exports.KCC20_TOKEN_NAME_MAX_LENGTH = 32;
|
|
16
|
+
exports.KCC20_ORDERBOOK_MAX_SWEEP_BID_LEGS = 3;
|
|
17
|
+
exports.KCC20_ORDERBOOK_MAX_EXPANDED_SWEEP_BID_LEGS = 10;
|
|
18
|
+
exports.KCC20_ORDERBOOK_EXPANDED_SWEEP_OUTPUT_SOMPI = 200000000n;
|
|
19
|
+
exports.DEFAULT_KCC20_PRICE_SCALE = 10n ** BigInt(exports.DEFAULT_KCC20_TOKEN_DECIMALS);
|
|
20
|
+
exports.KCC20_MIN_PROTOCOL_FEE_SOMPI = exports.DEFAULT_KCC20_MIN_PROTOCOL_FEE_SOMPI;
|
|
21
|
+
exports.KCC20_DEFAULT_PROTOCOL_FEE_BPS = exports.DEFAULT_KCC20_FEE_BPS;
|
|
22
|
+
exports.KCC20_DEFAULT_PRICE_SCALE = exports.DEFAULT_KCC20_PRICE_SCALE;
|
|
23
|
+
exports.KCC20_PLATFORM_PROTOCOL_FEE_RECIPIENT = "ce2100e68197c8e695bd781d07e2bd5de7ed77f5a97668884190531bdc632c01";
|
|
24
|
+
exports.KCC20_ORDERBOOK_PROTOCOL_FEE_RECIPIENT = exports.KCC20_PLATFORM_PROTOCOL_FEE_RECIPIENT;
|
|
25
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAC/B,0CAAmD,CAAC;AACzC,QAAA,SAAS,GACpB,kEAA2E,CAAC;AACjE,QAAA,cAAc,GAAG,UAAY,CAAC;AAC9B,QAAA,0BAA0B,GAAG,SAAW,CAAC;AACzC,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAC7B,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAC7B,QAAA,oCAAoC,GAAG,SAAW,CAAC;AACnD,QAAA,4BAA4B,GAAG,CAAC,CAAC;AACjC,QAAA,oCAAoC,GAAG,OAAQ,CAAC;AAChD,QAAA,0CAA0C,GAAG,SAAS,CAAC;AACvD,QAAA,uBAAuB,GAAG,EAAE,CAAC;AAC7B,QAAA,2BAA2B,GAAG,EAAE,CAAC;AACjC,QAAA,kCAAkC,GAAG,CAAC,CAAC;AACvC,QAAA,2CAA2C,GAAG,EAAE,CAAC;AACjD,QAAA,2CAA2C,GAAG,UAAY,CAAC;AAC3D,QAAA,yBAAyB,GACpC,GAAG,IAAI,MAAM,CAAC,oCAA4B,CAAC,CAAC;AACjC,QAAA,4BAA4B,GACvC,4CAAoC,CAAC;AAC1B,QAAA,8BAA8B,GAAG,6BAAqB,CAAC;AACvD,QAAA,yBAAyB,GAAG,iCAAyB,CAAC;AAEtD,QAAA,qCAAqC,GAChD,kEAA2E,CAAC;AACjE,QAAA,sCAAsC,GACjD,6CAAqC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared package receives a runtime from its host application.
|
|
3
|
+
*
|
|
4
|
+
* Do not replace this with an import from either Kaspa WASM build. The browser
|
|
5
|
+
* and Node applications initialize different binaries and use different asset
|
|
6
|
+
* loading mechanisms.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* A loaded Kaspa module supplied by the host application. The shared package
|
|
10
|
+
* intentionally does not prescribe the exact generated-WASM TypeScript
|
|
11
|
+
* declarations. Operation modules should narrow the capabilities they use.
|
|
12
|
+
*/
|
|
13
|
+
export interface KaspaWasmRuntime {
|
|
14
|
+
readonly [capability: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface CoreKaspaWasmCapabilities extends KaspaWasmRuntime {
|
|
17
|
+
readonly addressFromScriptPublicKey: (...args: any[]) => any;
|
|
18
|
+
readonly payToScriptHashScript: (...args: any[]) => any;
|
|
19
|
+
readonly payToAddressScript: (...args: any[]) => any;
|
|
20
|
+
readonly ScriptBuilder: any;
|
|
21
|
+
readonly Transaction: any;
|
|
22
|
+
readonly TransactionInput: any;
|
|
23
|
+
readonly TransactionOutput: any;
|
|
24
|
+
}
|
|
25
|
+
export interface KaspaWasmProvider {
|
|
26
|
+
getRuntime(): Promise<KaspaWasmRuntime>;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":""}
|