@ysk-mint/sdk 1.0.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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/dist/abi/launch.d.ts +389 -0
  4. package/dist/abi/launch.d.ts.map +1 -0
  5. package/dist/abi/launch.js +211 -0
  6. package/dist/abi/launch.js.map +1 -0
  7. package/dist/errors/abi.d.ts +272 -0
  8. package/dist/errors/abi.d.ts.map +1 -0
  9. package/dist/errors/abi.js +51 -0
  10. package/dist/errors/abi.js.map +1 -0
  11. package/dist/errors/codes.d.ts +64 -0
  12. package/dist/errors/codes.d.ts.map +1 -0
  13. package/dist/errors/codes.js +84 -0
  14. package/dist/errors/codes.js.map +1 -0
  15. package/dist/errors/decode.d.ts +5 -0
  16. package/dist/errors/decode.d.ts.map +1 -0
  17. package/dist/errors/decode.js +53 -0
  18. package/dist/errors/decode.js.map +1 -0
  19. package/dist/errors/messages.d.ts +162 -0
  20. package/dist/errors/messages.d.ts.map +1 -0
  21. package/dist/errors/messages.js +163 -0
  22. package/dist/errors/messages.js.map +1 -0
  23. package/dist/index.d.ts +12 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +12 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/oft/peers.d.ts +21 -0
  28. package/dist/oft/peers.d.ts.map +1 -0
  29. package/dist/oft/peers.js +39 -0
  30. package/dist/oft/peers.js.map +1 -0
  31. package/dist/validation/launch.d.ts +16 -0
  32. package/dist/validation/launch.d.ts.map +1 -0
  33. package/dist/validation/launch.js +37 -0
  34. package/dist/validation/launch.js.map +1 -0
  35. package/dist/validation/liquidity.d.ts +6 -0
  36. package/dist/validation/liquidity.d.ts.map +1 -0
  37. package/dist/validation/liquidity.js +29 -0
  38. package/dist/validation/liquidity.js.map +1 -0
  39. package/dist/validation/native.d.ts +10 -0
  40. package/dist/validation/native.d.ts.map +1 -0
  41. package/dist/validation/native.js +53 -0
  42. package/dist/validation/native.js.map +1 -0
  43. package/dist/validation/token.d.ts +17 -0
  44. package/dist/validation/token.d.ts.map +1 -0
  45. package/dist/validation/token.js +73 -0
  46. package/dist/validation/token.js.map +1 -0
  47. package/package.json +49 -0
@@ -0,0 +1,162 @@
1
+ import { type ErrorCodeName } from "./codes.js";
2
+ export declare const errorMessages: {
3
+ readonly en: {
4
+ readonly InvalidName: "Name must be 1–32 bytes and not only spaces.";
5
+ readonly InvalidSymbol: "Symbol must be 1–11 letters or digits, no spaces.";
6
+ readonly DecimalsOutOfRange: "Decimals must be between 6 and 18.";
7
+ readonly SupplyZero: "Total supply must be greater than zero.";
8
+ readonly SupplyOverflow: "Supply or limit exceeds the allowed maximum.";
9
+ readonly TaxTooHigh: "Tax is above the allowed cap.";
10
+ readonly RecipientZero: "A required address is missing.";
11
+ readonly LockDurationInvalid: "Lock duration must be between 30 days and 5 years.";
12
+ readonly DexUnsupported: "This DEX is not supported on the selected chain.";
13
+ readonly ChainDisabled: "This chain is not enabled yet.";
14
+ readonly InsufficientNative: "Not enough native token for gas or liquidity.";
15
+ readonly LockNotMature: "This lock has not reached its unlock time.";
16
+ readonly NotLockOwner: "Only the lock owner can do this.";
17
+ readonly PeerAlreadySet: "A LayerZero peer is already set for this chain.";
18
+ readonly PeerNotSet: "No LayerZero peer is set for this chain.";
19
+ readonly ModuleDisabled: "This token module is not enabled.";
20
+ readonly OFTPathMustBeFeeFree: "Cross-chain OFT transfers cannot take tax.";
21
+ readonly AlreadyInitialized: "This token is already initialized.";
22
+ readonly NotOwner: "Only the owner can do this.";
23
+ readonly UnknownModule: "Unknown module flag.";
24
+ readonly InvalidSupplyMode: "Invalid supply mode.";
25
+ readonly InvalidLockMode: "Invalid lock mode.";
26
+ readonly InvalidOwnershipAction: "Invalid ownership action.";
27
+ readonly MintNotAllowed: "Minting is disabled on this token.";
28
+ readonly InvalidPeer: "Invalid peer address.";
29
+ readonly InsufficientBalance: "Token balance is too low.";
30
+ readonly ZeroAmount: "Amount must be greater than zero.";
31
+ readonly CloneFailed: "Token clone failed.";
32
+ readonly InvalidChainKey: "Unknown chain.";
33
+ readonly InvalidDexKind: "Unknown DEX.";
34
+ readonly InvalidLaunchStep: "Unknown wizard step.";
35
+ readonly InvalidLaunchStatus: "Unknown launch status.";
36
+ readonly NotInitialized: "Token is not initialized.";
37
+ readonly EndpointZero: "LayerZero endpoint is missing.";
38
+ readonly LengthMismatch: "Array lengths do not match.";
39
+ readonly LockNotFound: "This lock id does not exist.";
40
+ readonly AlreadyWithdrawn: "This lock was already withdrawn or burned.";
41
+ readonly NativeTransferFailed: "Native token refund failed.";
42
+ readonly Paused: "Token transfers are paused.";
43
+ readonly MaxTxExceeded: "This transfer exceeds the max transaction amount.";
44
+ readonly MaxWalletExceeded: "This transfer would exceed the max wallet amount.";
45
+ readonly Blacklisted: "This address is blacklisted.";
46
+ readonly BondingDisabled: "Bonding curve is not enabled in this release.";
47
+ readonly SaleNotActive: "This sale is not active.";
48
+ readonly SaleCapExceeded: "Sale cap would be exceeded.";
49
+ readonly SaleNotFailed: "Refunds are only available after a failed sale.";
50
+ readonly SaleNotFinalizable: "Sale cannot be finalized yet.";
51
+ readonly PlatformFeeTooHigh: "Platform fee is above 5%.";
52
+ readonly Unknown: "The transaction reverted for an unknown reason.";
53
+ readonly SimulationFailed: "Simulation failed. The wallet was not prompted.";
54
+ };
55
+ readonly "zh-HK": {
56
+ readonly InvalidName: "名稱須為 1–32 bytes,且不能只有空格。";
57
+ readonly InvalidSymbol: "代號須為 1–11 個英數字,不可有空格。";
58
+ readonly DecimalsOutOfRange: "Decimals 必須介乎 6 至 18。";
59
+ readonly SupplyZero: "總供應量必須大於零。";
60
+ readonly SupplyOverflow: "供應量或限額超出上限。";
61
+ readonly TaxTooHigh: "稅率高於允許上限。";
62
+ readonly RecipientZero: "缺少必要地址。";
63
+ readonly LockDurationInvalid: "鎖定期須介乎 30 日至 5 年。";
64
+ readonly DexUnsupported: "所選鏈不支援這個 DEX。";
65
+ readonly ChainDisabled: "這條鏈尚未開放。";
66
+ readonly InsufficientNative: "原生幣不足以支付 gas 或流動性。";
67
+ readonly LockNotMature: "鎖定尚未到期。";
68
+ readonly NotLockOwner: "只有鎖定擁有人可以執行。";
69
+ readonly PeerAlreadySet: "這條鏈的 LayerZero peer 已設定。";
70
+ readonly PeerNotSet: "這條鏈尚未設定 LayerZero peer。";
71
+ readonly ModuleDisabled: "這個代幣模組未啟用。";
72
+ readonly OFTPathMustBeFeeFree: "跨鏈 OFT 轉帳不可抽稅。";
73
+ readonly AlreadyInitialized: "這個代幣已初始化。";
74
+ readonly NotOwner: "只有擁有人可以執行。";
75
+ readonly UnknownModule: "未知模組旗標。";
76
+ readonly InvalidSupplyMode: "供應模式無效。";
77
+ readonly InvalidLockMode: "鎖定模式無效。";
78
+ readonly InvalidOwnershipAction: "所有權動作無效。";
79
+ readonly MintNotAllowed: "這個代幣不可增發。";
80
+ readonly InvalidPeer: "peer 地址無效。";
81
+ readonly InsufficientBalance: "代幣餘額不足。";
82
+ readonly ZeroAmount: "數量必須大於零。";
83
+ readonly CloneFailed: "代幣 clone 失敗。";
84
+ readonly InvalidChainKey: "未知鏈。";
85
+ readonly InvalidDexKind: "未知 DEX。";
86
+ readonly InvalidLaunchStep: "未知 Wizard 步驟。";
87
+ readonly InvalidLaunchStatus: "未知發幣狀態。";
88
+ readonly NotInitialized: "代幣尚未初始化。";
89
+ readonly EndpointZero: "缺少 LayerZero endpoint。";
90
+ readonly LengthMismatch: "陣列長度不一致。";
91
+ readonly LockNotFound: "找不到這個鎖定編號。";
92
+ readonly AlreadyWithdrawn: "這個鎖定已提取或已銷毀。";
93
+ readonly NativeTransferFailed: "原生幣退回失敗。";
94
+ readonly Paused: "代幣轉帳已暫停。";
95
+ readonly MaxTxExceeded: "這筆轉帳超過單筆上限。";
96
+ readonly MaxWalletExceeded: "這筆轉帳會超過單錢包上限。";
97
+ readonly Blacklisted: "這個地址已被列入黑名單。";
98
+ readonly BondingDisabled: "本版本未開放 Bonding Curve。";
99
+ readonly SaleNotActive: "這個銷售尚未進行或已結束。";
100
+ readonly SaleCapExceeded: "會超過銷售上限。";
101
+ readonly SaleNotFailed: "只有失敗的銷售可以退款。";
102
+ readonly SaleNotFinalizable: "銷售尚不可結算。";
103
+ readonly PlatformFeeTooHigh: "平台費高於 5%。";
104
+ readonly Unknown: "交易以未知原因失敗。";
105
+ readonly SimulationFailed: "模擬失敗,尚未彈出錢包。";
106
+ };
107
+ readonly "zh-CN": {
108
+ readonly InvalidName: "名称须为 1–32 bytes,且不能只有空格。";
109
+ readonly InvalidSymbol: "代号须为 1–11 个英数字,不可有空格。";
110
+ readonly DecimalsOutOfRange: "Decimals 必须介于 6 至 18。";
111
+ readonly SupplyZero: "总供应量必须大于零。";
112
+ readonly SupplyOverflow: "供应量或限额超出上限。";
113
+ readonly TaxTooHigh: "税率高于允许上限。";
114
+ readonly RecipientZero: "缺少必要地址。";
115
+ readonly LockDurationInvalid: "锁定期须介于 30 日至 5 年。";
116
+ readonly DexUnsupported: "所选链不支持这个 DEX。";
117
+ readonly ChainDisabled: "这条链尚未开放。";
118
+ readonly InsufficientNative: "原生币不足以支付 gas 或流动性。";
119
+ readonly LockNotMature: "锁定尚未到期。";
120
+ readonly NotLockOwner: "只有锁定拥有人可以执行。";
121
+ readonly PeerAlreadySet: "这条链的 LayerZero peer 已设置。";
122
+ readonly PeerNotSet: "这条链尚未设置 LayerZero peer。";
123
+ readonly ModuleDisabled: "这个代币模块未启用。";
124
+ readonly OFTPathMustBeFeeFree: "跨链 OFT 转账不可抽税。";
125
+ readonly UnknownModule: "未知模块旗标。";
126
+ readonly AlreadyInitialized: "这个代币已初始化。";
127
+ readonly NotOwner: "只有拥有人可以执行。";
128
+ readonly InvalidSupplyMode: "供应模式无效。";
129
+ readonly InvalidLockMode: "锁定模式无效。";
130
+ readonly InvalidOwnershipAction: "所有权动作无效。";
131
+ readonly MintNotAllowed: "这个代币不可增发。";
132
+ readonly InvalidPeer: "peer 地址无效。";
133
+ readonly InsufficientBalance: "代币余额不足。";
134
+ readonly ZeroAmount: "数量必须大于零。";
135
+ readonly CloneFailed: "代币 clone 失败。";
136
+ readonly InvalidChainKey: "未知链。";
137
+ readonly InvalidDexKind: "未知 DEX。";
138
+ readonly InvalidLaunchStep: "未知 Wizard 步骤。";
139
+ readonly InvalidLaunchStatus: "未知发币状态。";
140
+ readonly NotInitialized: "代币尚未初始化。";
141
+ readonly EndpointZero: "缺少 LayerZero endpoint。";
142
+ readonly LengthMismatch: "数组长度不一致。";
143
+ readonly LockNotFound: "找不到这个锁定编号。";
144
+ readonly AlreadyWithdrawn: "这个锁定已提取或已销毁。";
145
+ readonly NativeTransferFailed: "原生币退回失败。";
146
+ readonly Paused: "代币转账已暂停。";
147
+ readonly MaxTxExceeded: "这笔转账超过单笔上限。";
148
+ readonly MaxWalletExceeded: "这笔转账会超过单钱包上限。";
149
+ readonly Blacklisted: "这个地址已被列入黑名单。";
150
+ readonly BondingDisabled: "本版本未开放 Bonding Curve。";
151
+ readonly SaleNotActive: "这个销售尚未进行或已结束。";
152
+ readonly SaleCapExceeded: "会超过销售上限。";
153
+ readonly SaleNotFailed: "只有失败的销售可以退款。";
154
+ readonly SaleNotFinalizable: "销售尚不可结算。";
155
+ readonly PlatformFeeTooHigh: "平台费高于 5%。";
156
+ readonly Unknown: "交易以未知原因失败。";
157
+ readonly SimulationFailed: "模拟失败,尚未弹出钱包。";
158
+ };
159
+ };
160
+ export type Locale = keyof typeof errorMessages;
161
+ export declare function messageFor(code: ErrorCodeName, locale?: Locale): string;
162
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/errors/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6J0D,CAAC;AAErF,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,aAAa,CAAC;AAEhD,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,GAAE,MAAa,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,163 @@
1
+ import { ErrorCode } from "./codes.js";
2
+ export const errorMessages = {
3
+ en: {
4
+ [ErrorCode.InvalidName]: "Name must be 1–32 bytes and not only spaces.",
5
+ [ErrorCode.InvalidSymbol]: "Symbol must be 1–11 letters or digits, no spaces.",
6
+ [ErrorCode.DecimalsOutOfRange]: "Decimals must be between 6 and 18.",
7
+ [ErrorCode.SupplyZero]: "Total supply must be greater than zero.",
8
+ [ErrorCode.SupplyOverflow]: "Supply or limit exceeds the allowed maximum.",
9
+ [ErrorCode.TaxTooHigh]: "Tax is above the allowed cap.",
10
+ [ErrorCode.RecipientZero]: "A required address is missing.",
11
+ [ErrorCode.LockDurationInvalid]: "Lock duration must be between 30 days and 5 years.",
12
+ [ErrorCode.DexUnsupported]: "This DEX is not supported on the selected chain.",
13
+ [ErrorCode.ChainDisabled]: "This chain is not enabled yet.",
14
+ [ErrorCode.InsufficientNative]: "Not enough native token for gas or liquidity.",
15
+ [ErrorCode.LockNotMature]: "This lock has not reached its unlock time.",
16
+ [ErrorCode.NotLockOwner]: "Only the lock owner can do this.",
17
+ [ErrorCode.PeerAlreadySet]: "A LayerZero peer is already set for this chain.",
18
+ [ErrorCode.PeerNotSet]: "No LayerZero peer is set for this chain.",
19
+ [ErrorCode.ModuleDisabled]: "This token module is not enabled.",
20
+ [ErrorCode.OFTPathMustBeFeeFree]: "Cross-chain OFT transfers cannot take tax.",
21
+ [ErrorCode.AlreadyInitialized]: "This token is already initialized.",
22
+ [ErrorCode.NotOwner]: "Only the owner can do this.",
23
+ [ErrorCode.UnknownModule]: "Unknown module flag.",
24
+ [ErrorCode.InvalidSupplyMode]: "Invalid supply mode.",
25
+ [ErrorCode.InvalidLockMode]: "Invalid lock mode.",
26
+ [ErrorCode.InvalidOwnershipAction]: "Invalid ownership action.",
27
+ [ErrorCode.MintNotAllowed]: "Minting is disabled on this token.",
28
+ [ErrorCode.InvalidPeer]: "Invalid peer address.",
29
+ [ErrorCode.InsufficientBalance]: "Token balance is too low.",
30
+ [ErrorCode.ZeroAmount]: "Amount must be greater than zero.",
31
+ [ErrorCode.CloneFailed]: "Token clone failed.",
32
+ [ErrorCode.InvalidChainKey]: "Unknown chain.",
33
+ [ErrorCode.InvalidDexKind]: "Unknown DEX.",
34
+ [ErrorCode.InvalidLaunchStep]: "Unknown wizard step.",
35
+ [ErrorCode.InvalidLaunchStatus]: "Unknown launch status.",
36
+ [ErrorCode.NotInitialized]: "Token is not initialized.",
37
+ [ErrorCode.EndpointZero]: "LayerZero endpoint is missing.",
38
+ [ErrorCode.LengthMismatch]: "Array lengths do not match.",
39
+ [ErrorCode.LockNotFound]: "This lock id does not exist.",
40
+ [ErrorCode.AlreadyWithdrawn]: "This lock was already withdrawn or burned.",
41
+ [ErrorCode.NativeTransferFailed]: "Native token refund failed.",
42
+ [ErrorCode.Paused]: "Token transfers are paused.",
43
+ [ErrorCode.MaxTxExceeded]: "This transfer exceeds the max transaction amount.",
44
+ [ErrorCode.MaxWalletExceeded]: "This transfer would exceed the max wallet amount.",
45
+ [ErrorCode.Blacklisted]: "This address is blacklisted.",
46
+ [ErrorCode.BondingDisabled]: "Bonding curve is not enabled in this release.",
47
+ [ErrorCode.SaleNotActive]: "This sale is not active.",
48
+ [ErrorCode.SaleCapExceeded]: "Sale cap would be exceeded.",
49
+ [ErrorCode.SaleNotFailed]: "Refunds are only available after a failed sale.",
50
+ [ErrorCode.SaleNotFinalizable]: "Sale cannot be finalized yet.",
51
+ [ErrorCode.PlatformFeeTooHigh]: "Platform fee is above 5%.",
52
+ [ErrorCode.Unknown]: "The transaction reverted for an unknown reason.",
53
+ [ErrorCode.SimulationFailed]: "Simulation failed. The wallet was not prompted.",
54
+ },
55
+ "zh-HK": {
56
+ [ErrorCode.InvalidName]: "名稱須為 1–32 bytes,且不能只有空格。",
57
+ [ErrorCode.InvalidSymbol]: "代號須為 1–11 個英數字,不可有空格。",
58
+ [ErrorCode.DecimalsOutOfRange]: "Decimals 必須介乎 6 至 18。",
59
+ [ErrorCode.SupplyZero]: "總供應量必須大於零。",
60
+ [ErrorCode.SupplyOverflow]: "供應量或限額超出上限。",
61
+ [ErrorCode.TaxTooHigh]: "稅率高於允許上限。",
62
+ [ErrorCode.RecipientZero]: "缺少必要地址。",
63
+ [ErrorCode.LockDurationInvalid]: "鎖定期須介乎 30 日至 5 年。",
64
+ [ErrorCode.DexUnsupported]: "所選鏈不支援這個 DEX。",
65
+ [ErrorCode.ChainDisabled]: "這條鏈尚未開放。",
66
+ [ErrorCode.InsufficientNative]: "原生幣不足以支付 gas 或流動性。",
67
+ [ErrorCode.LockNotMature]: "鎖定尚未到期。",
68
+ [ErrorCode.NotLockOwner]: "只有鎖定擁有人可以執行。",
69
+ [ErrorCode.PeerAlreadySet]: "這條鏈的 LayerZero peer 已設定。",
70
+ [ErrorCode.PeerNotSet]: "這條鏈尚未設定 LayerZero peer。",
71
+ [ErrorCode.ModuleDisabled]: "這個代幣模組未啟用。",
72
+ [ErrorCode.OFTPathMustBeFeeFree]: "跨鏈 OFT 轉帳不可抽稅。",
73
+ [ErrorCode.AlreadyInitialized]: "這個代幣已初始化。",
74
+ [ErrorCode.NotOwner]: "只有擁有人可以執行。",
75
+ [ErrorCode.UnknownModule]: "未知模組旗標。",
76
+ [ErrorCode.InvalidSupplyMode]: "供應模式無效。",
77
+ [ErrorCode.InvalidLockMode]: "鎖定模式無效。",
78
+ [ErrorCode.InvalidOwnershipAction]: "所有權動作無效。",
79
+ [ErrorCode.MintNotAllowed]: "這個代幣不可增發。",
80
+ [ErrorCode.InvalidPeer]: "peer 地址無效。",
81
+ [ErrorCode.InsufficientBalance]: "代幣餘額不足。",
82
+ [ErrorCode.ZeroAmount]: "數量必須大於零。",
83
+ [ErrorCode.CloneFailed]: "代幣 clone 失敗。",
84
+ [ErrorCode.InvalidChainKey]: "未知鏈。",
85
+ [ErrorCode.InvalidDexKind]: "未知 DEX。",
86
+ [ErrorCode.InvalidLaunchStep]: "未知 Wizard 步驟。",
87
+ [ErrorCode.InvalidLaunchStatus]: "未知發幣狀態。",
88
+ [ErrorCode.NotInitialized]: "代幣尚未初始化。",
89
+ [ErrorCode.EndpointZero]: "缺少 LayerZero endpoint。",
90
+ [ErrorCode.LengthMismatch]: "陣列長度不一致。",
91
+ [ErrorCode.LockNotFound]: "找不到這個鎖定編號。",
92
+ [ErrorCode.AlreadyWithdrawn]: "這個鎖定已提取或已銷毀。",
93
+ [ErrorCode.NativeTransferFailed]: "原生幣退回失敗。",
94
+ [ErrorCode.Paused]: "代幣轉帳已暫停。",
95
+ [ErrorCode.MaxTxExceeded]: "這筆轉帳超過單筆上限。",
96
+ [ErrorCode.MaxWalletExceeded]: "這筆轉帳會超過單錢包上限。",
97
+ [ErrorCode.Blacklisted]: "這個地址已被列入黑名單。",
98
+ [ErrorCode.BondingDisabled]: "本版本未開放 Bonding Curve。",
99
+ [ErrorCode.SaleNotActive]: "這個銷售尚未進行或已結束。",
100
+ [ErrorCode.SaleCapExceeded]: "會超過銷售上限。",
101
+ [ErrorCode.SaleNotFailed]: "只有失敗的銷售可以退款。",
102
+ [ErrorCode.SaleNotFinalizable]: "銷售尚不可結算。",
103
+ [ErrorCode.PlatformFeeTooHigh]: "平台費高於 5%。",
104
+ [ErrorCode.Unknown]: "交易以未知原因失敗。",
105
+ [ErrorCode.SimulationFailed]: "模擬失敗,尚未彈出錢包。",
106
+ },
107
+ "zh-CN": {
108
+ [ErrorCode.InvalidName]: "名称须为 1–32 bytes,且不能只有空格。",
109
+ [ErrorCode.InvalidSymbol]: "代号须为 1–11 个英数字,不可有空格。",
110
+ [ErrorCode.DecimalsOutOfRange]: "Decimals 必须介于 6 至 18。",
111
+ [ErrorCode.SupplyZero]: "总供应量必须大于零。",
112
+ [ErrorCode.SupplyOverflow]: "供应量或限额超出上限。",
113
+ [ErrorCode.TaxTooHigh]: "税率高于允许上限。",
114
+ [ErrorCode.RecipientZero]: "缺少必要地址。",
115
+ [ErrorCode.LockDurationInvalid]: "锁定期须介于 30 日至 5 年。",
116
+ [ErrorCode.DexUnsupported]: "所选链不支持这个 DEX。",
117
+ [ErrorCode.ChainDisabled]: "这条链尚未开放。",
118
+ [ErrorCode.InsufficientNative]: "原生币不足以支付 gas 或流动性。",
119
+ [ErrorCode.LockNotMature]: "锁定尚未到期。",
120
+ [ErrorCode.NotLockOwner]: "只有锁定拥有人可以执行。",
121
+ [ErrorCode.PeerAlreadySet]: "这条链的 LayerZero peer 已设置。",
122
+ [ErrorCode.PeerNotSet]: "这条链尚未设置 LayerZero peer。",
123
+ [ErrorCode.ModuleDisabled]: "这个代币模块未启用。",
124
+ [ErrorCode.OFTPathMustBeFeeFree]: "跨链 OFT 转账不可抽税。",
125
+ [ErrorCode.UnknownModule]: "未知模块旗标。",
126
+ [ErrorCode.AlreadyInitialized]: "这个代币已初始化。",
127
+ [ErrorCode.NotOwner]: "只有拥有人可以执行。",
128
+ [ErrorCode.InvalidSupplyMode]: "供应模式无效。",
129
+ [ErrorCode.InvalidLockMode]: "锁定模式无效。",
130
+ [ErrorCode.InvalidOwnershipAction]: "所有权动作无效。",
131
+ [ErrorCode.MintNotAllowed]: "这个代币不可增发。",
132
+ [ErrorCode.InvalidPeer]: "peer 地址无效。",
133
+ [ErrorCode.InsufficientBalance]: "代币余额不足。",
134
+ [ErrorCode.ZeroAmount]: "数量必须大于零。",
135
+ [ErrorCode.CloneFailed]: "代币 clone 失败。",
136
+ [ErrorCode.InvalidChainKey]: "未知链。",
137
+ [ErrorCode.InvalidDexKind]: "未知 DEX。",
138
+ [ErrorCode.InvalidLaunchStep]: "未知 Wizard 步骤。",
139
+ [ErrorCode.InvalidLaunchStatus]: "未知发币状态。",
140
+ [ErrorCode.NotInitialized]: "代币尚未初始化。",
141
+ [ErrorCode.EndpointZero]: "缺少 LayerZero endpoint。",
142
+ [ErrorCode.LengthMismatch]: "数组长度不一致。",
143
+ [ErrorCode.LockNotFound]: "找不到这个锁定编号。",
144
+ [ErrorCode.AlreadyWithdrawn]: "这个锁定已提取或已销毁。",
145
+ [ErrorCode.NativeTransferFailed]: "原生币退回失败。",
146
+ [ErrorCode.Paused]: "代币转账已暂停。",
147
+ [ErrorCode.MaxTxExceeded]: "这笔转账超过单笔上限。",
148
+ [ErrorCode.MaxWalletExceeded]: "这笔转账会超过单钱包上限。",
149
+ [ErrorCode.Blacklisted]: "这个地址已被列入黑名单。",
150
+ [ErrorCode.BondingDisabled]: "本版本未开放 Bonding Curve。",
151
+ [ErrorCode.SaleNotActive]: "这个销售尚未进行或已结束。",
152
+ [ErrorCode.SaleCapExceeded]: "会超过销售上限。",
153
+ [ErrorCode.SaleNotFailed]: "只有失败的销售可以退款。",
154
+ [ErrorCode.SaleNotFinalizable]: "销售尚不可结算。",
155
+ [ErrorCode.PlatformFeeTooHigh]: "平台费高于 5%。",
156
+ [ErrorCode.Unknown]: "交易以未知原因失败。",
157
+ [ErrorCode.SimulationFailed]: "模拟失败,尚未弹出钱包。",
158
+ },
159
+ };
160
+ export function messageFor(code, locale = "en") {
161
+ return errorMessages[locale][code] ?? errorMessages[locale][ErrorCode.Unknown];
162
+ }
163
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/errors/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,YAAY,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,EAAE;QACF,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,8CAA8C;QACvE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,mDAAmD;QAC9E,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,oCAAoC;QACpE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,yCAAyC;QACjE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,8CAA8C;QAC1E,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,+BAA+B;QACvD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,gCAAgC;QAC3D,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,oDAAoD;QACrF,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,kDAAkD;QAC9E,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,gCAAgC;QAC3D,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,+CAA+C;QAC/E,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,4CAA4C;QACvE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,kCAAkC;QAC5D,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,iDAAiD;QAC7E,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,0CAA0C;QAClE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,mCAAmC;QAC/D,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,4CAA4C;QAC9E,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,oCAAoC;QACpE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,6BAA6B;QACnD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,sBAAsB;QACjD,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,sBAAsB;QACrD,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,oBAAoB;QACjD,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,2BAA2B;QAC/D,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,oCAAoC;QAChE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,uBAAuB;QAChD,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,2BAA2B;QAC5D,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,mCAAmC;QAC3D,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,qBAAqB;QAC9C,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,gBAAgB;QAC7C,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,cAAc;QAC1C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,sBAAsB;QACrD,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,wBAAwB;QACzD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,2BAA2B;QACvD,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,gCAAgC;QAC1D,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,6BAA6B;QACzD,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,8BAA8B;QACxD,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,4CAA4C;QAC1E,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,6BAA6B;QAC/D,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,6BAA6B;QACjD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,mDAAmD;QAC9E,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,mDAAmD;QAClF,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,8BAA8B;QACvD,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,+CAA+C;QAC5E,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,0BAA0B;QACrD,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,6BAA6B;QAC1D,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,iDAAiD;QAC5E,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,+BAA+B;QAC/D,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,2BAA2B;QAC3D,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,iDAAiD;QACtE,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,iDAAiD;KAChF;IACD,OAAO,EAAE;QACP,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,0BAA0B;QACnD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,uBAAuB;QAClD,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,uBAAuB;QACvD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY;QACpC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,aAAa;QACzC,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,WAAW;QACnC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS;QACpC,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,mBAAmB;QACpD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,eAAe;QAC3C,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,UAAU;QACrC,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,oBAAoB;QACpD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS;QACpC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,cAAc;QACxC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,0BAA0B;QACtD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,yBAAyB;QACjD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,YAAY;QACxC,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,gBAAgB;QAClD,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW;QAC3C,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY;QAClC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS;QACpC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS;QACxC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,SAAS;QACtC,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,UAAU;QAC9C,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,WAAW;QACvC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,YAAY;QACrC,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,SAAS;QAC1C,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU;QAClC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,cAAc;QACvC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM;QACnC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,SAAS;QACrC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,eAAe;QAC9C,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,SAAS;QAC1C,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU;QACtC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,wBAAwB;QAClD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU;QACtC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY;QACtC,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,cAAc;QAC5C,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,UAAU;QAC5C,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU;QAC9B,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa;QACxC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,eAAe;QAC9C,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,cAAc;QACvC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,uBAAuB;QACpD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,eAAe;QAC1C,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,UAAU;QACvC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc;QACzC,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,UAAU;QAC1C,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW;QAC3C,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY;QACjC,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,cAAc;KAC7C;IACD,OAAO,EAAE;QACP,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,0BAA0B;QACnD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,uBAAuB;QAClD,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,uBAAuB;QACvD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY;QACpC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,aAAa;QACzC,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,WAAW;QACnC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS;QACpC,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,mBAAmB;QACpD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,eAAe;QAC3C,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,UAAU;QACrC,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,oBAAoB;QACpD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS;QACpC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,cAAc;QACxC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,0BAA0B;QACtD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,yBAAyB;QACjD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,YAAY;QACxC,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,gBAAgB;QAClD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS;QACpC,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW;QAC3C,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY;QAClC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,SAAS;QACxC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,SAAS;QACtC,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,UAAU;QAC9C,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,WAAW;QACvC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,YAAY;QACrC,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,SAAS;QAC1C,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU;QAClC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,cAAc;QACvC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM;QACnC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,SAAS;QACrC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,eAAe;QAC9C,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,SAAS;QAC1C,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU;QACtC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,wBAAwB;QAClD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU;QACtC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY;QACtC,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,cAAc;QAC5C,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,UAAU;QAC5C,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU;QAC9B,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa;QACxC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,eAAe;QAC9C,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,cAAc;QACvC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,uBAAuB;QACpD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,eAAe;QAC1C,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,UAAU;QACvC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,cAAc;QACzC,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,UAAU;QAC1C,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW;QAC3C,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY;QACjC,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,cAAc;KAC7C;CACiF,CAAC;AAIrF,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,SAAiB,IAAI;IACnE,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,12 @@
1
+ export * from "@ysk-mint/config";
2
+ export * from "./errors/codes.js";
3
+ export * from "./errors/abi.js";
4
+ export * from "./errors/messages.js";
5
+ export * from "./errors/decode.js";
6
+ export * from "./validation/token.js";
7
+ export * from "./validation/launch.js";
8
+ export * from "./validation/liquidity.js";
9
+ export * from "./validation/native.js";
10
+ export * from "./abi/launch.js";
11
+ export * from "./oft/peers.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export * from "@ysk-mint/config";
2
+ export * from "./errors/codes.js";
3
+ export * from "./errors/abi.js";
4
+ export * from "./errors/messages.js";
5
+ export * from "./errors/decode.js";
6
+ export * from "./validation/token.js";
7
+ export * from "./validation/launch.js";
8
+ export * from "./validation/liquidity.js";
9
+ export * from "./validation/native.js";
10
+ export * from "./abi/launch.js";
11
+ export * from "./oft/peers.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type LaunchError } from "../errors/codes.js";
2
+ import type { Locale } from "../errors/messages.js";
3
+ import { type Address } from "viem";
4
+ export type DeployedOFT = {
5
+ chainKey: number;
6
+ address: Address;
7
+ };
8
+ export type PeerCall = {
9
+ fromChainKey: number;
10
+ from: Address;
11
+ dstEid: number;
12
+ peer: `0x${string}`;
13
+ };
14
+ export declare function toPeerBytes32(address: Address): `0x${string}`;
15
+ /** Bidirectional setPeer on EVM OFT only. Native chains have no Endpoint. */
16
+ export declare function planPeerCalls(deployed: DeployedOFT[]): PeerCall[];
17
+ export declare function validateSupplySplit(total: bigint, parts: {
18
+ chainKey: number;
19
+ amount: bigint;
20
+ }[], locale?: Locale): LaunchError[];
21
+ //# sourceMappingURL=peers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../src/oft/peers.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAO,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,MAAM,EAAE,CAE7D;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAkBjE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,EAC7C,MAAM,GAAE,MAAa,GACpB,WAAW,EAAE,CAKf"}
@@ -0,0 +1,39 @@
1
+ import { CHAINS } from "@ysk-mint/config";
2
+ import { ErrorCode } from "../errors/codes.js";
3
+ import { err } from "../errors/decode.js";
4
+ import { pad } from "viem";
5
+ export function toPeerBytes32(address) {
6
+ return pad(address, { size: 32 });
7
+ }
8
+ /** Bidirectional setPeer on EVM OFT only. Native chains have no Endpoint. */
9
+ export function planPeerCalls(deployed) {
10
+ const calls = [];
11
+ for (const from of deployed) {
12
+ const fromChain = CHAINS[from.chainKey];
13
+ if (!fromChain?.evm || !fromChain.eid)
14
+ continue;
15
+ for (const to of deployed) {
16
+ if (from.chainKey === to.chainKey)
17
+ continue;
18
+ const toChain = CHAINS[to.chainKey];
19
+ if (!toChain?.evm || !toChain.eid)
20
+ continue;
21
+ calls.push({
22
+ fromChainKey: from.chainKey,
23
+ from: from.address,
24
+ dstEid: toChain.eid,
25
+ peer: toPeerBytes32(to.address),
26
+ });
27
+ }
28
+ }
29
+ return calls;
30
+ }
31
+ export function validateSupplySplit(total, parts, locale = "en") {
32
+ if (parts.length === 0)
33
+ return [err(ErrorCode.LengthMismatch, [], locale)];
34
+ const sum = parts.reduce((acc, p) => acc + p.amount, 0n);
35
+ if (sum !== total)
36
+ return [err(ErrorCode.SupplyOverflow, [sum, total], locale)];
37
+ return [];
38
+ }
39
+ //# sourceMappingURL=peers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peers.js","sourceRoot":"","sources":["../../src/oft/peers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAgB,MAAM,MAAM,CAAC;AAczC,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,QAAuB;IACnD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAA+B,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG;YAAE,SAAS;QAChD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ;gBAAE,SAAS;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,QAA+B,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;gBAAE,SAAS;YAC5C,KAAK,CAAC,IAAI,CAAC;gBACT,YAAY,EAAE,IAAI,CAAC,QAAQ;gBAC3B,IAAI,EAAE,IAAI,CAAC,OAAO;gBAClB,MAAM,EAAE,OAAO,CAAC,GAAG;gBACnB,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,KAA6C,EAC7C,SAAiB,IAAI;IAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChF,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type LaunchError } from "../errors/codes.js";
2
+ import type { Locale } from "../errors/messages.js";
3
+ export type LaunchDraft = {
4
+ name: string;
5
+ symbol: string;
6
+ decimals: number;
7
+ totalSupply: bigint;
8
+ supplyMode: number;
9
+ moduleFlags: number;
10
+ owner: `0x${string}`;
11
+ chains: number[];
12
+ };
13
+ export declare function validateChainKey(chain: number, locale?: Locale): LaunchError[];
14
+ export declare function validateChainEnabled(chain: number, locale?: Locale): LaunchError[];
15
+ export declare function validateLaunchDraft(draft: LaunchDraft, locale?: Locale): LaunchError[];
16
+ //# sourceMappingURL=launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/validation/launch.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAMpF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAKxF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAgB5F"}
@@ -0,0 +1,37 @@
1
+ import { CHAINS, ChainKey } from "@ysk-mint/config";
2
+ import { ErrorCode } from "../errors/codes.js";
3
+ import { err } from "../errors/decode.js";
4
+ import { validateBasics, validateModuleFlags, validateSupplyMode } from "./token.js";
5
+ export function validateChainKey(chain, locale = "en") {
6
+ const max = Math.max(...Object.values(ChainKey));
7
+ if (!Number.isInteger(chain) || chain < 0 || chain > max) {
8
+ return [err(ErrorCode.InvalidChainKey, [chain], locale)];
9
+ }
10
+ return [];
11
+ }
12
+ export function validateChainEnabled(chain, locale = "en") {
13
+ const def = CHAINS[chain];
14
+ if (!def)
15
+ return [err(ErrorCode.InvalidChainKey, [chain], locale)];
16
+ if (!def.enabled)
17
+ return [err(ErrorCode.ChainDisabled, [chain], locale)];
18
+ return [];
19
+ }
20
+ export function validateLaunchDraft(draft, locale = "en") {
21
+ const errors = [
22
+ ...validateBasics(draft, locale),
23
+ ...validateSupplyMode(draft.supplyMode, locale),
24
+ ...validateModuleFlags(draft.moduleFlags, locale),
25
+ ];
26
+ if (draft.chains.length === 0)
27
+ errors.push(err(ErrorCode.InvalidChainKey, [], locale));
28
+ for (const c of draft.chains)
29
+ errors.push(...validateChainEnabled(c, locale));
30
+ const needsEvmOwner = draft.chains.some((c) => CHAINS[c]?.evm);
31
+ if (needsEvmOwner &&
32
+ (!draft.owner || draft.owner === "0x0000000000000000000000000000000000000000")) {
33
+ errors.push(err(ErrorCode.RecipientZero, [], locale));
34
+ }
35
+ return errors;
36
+ }
37
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/validation/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAqB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAarF,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,SAAiB,IAAI;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,SAAiB,IAAI;IACvE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAwC,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAkB,EAAE,SAAiB,IAAI;IAC3E,MAAM,MAAM,GAAkB;QAC5B,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;QAChC,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;QAC/C,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;KAClD,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACvF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAoC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClG,IACE,aAAa;QACb,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,4CAA4C,CAAC,EAC9E,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type LaunchError } from "../errors/codes.js";
2
+ import type { Locale } from "../errors/messages.js";
3
+ export declare function validateLockMode(mode: number, locale?: Locale): LaunchError[];
4
+ export declare function validateLock(mode: number, duration: number, locale?: Locale): LaunchError[];
5
+ export declare function validateLpAmounts(tokenAmount: bigint, nativeAmount: bigint, locale?: Locale): LaunchError[];
6
+ //# sourceMappingURL=liquidity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidity.d.ts","sourceRoot":"","sources":["../../src/validation/liquidity.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAKnF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAQjG;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAKjH"}
@@ -0,0 +1,29 @@
1
+ import { LOCK_MAX_SECONDS, LOCK_MIN_SECONDS, LockMode } from "@ysk-mint/config";
2
+ import { ErrorCode } from "../errors/codes.js";
3
+ import { err } from "../errors/decode.js";
4
+ export function validateLockMode(mode, locale = "en") {
5
+ if (mode !== LockMode.Timed && mode !== LockMode.Burn) {
6
+ return [err(ErrorCode.InvalidLockMode, [mode], locale)];
7
+ }
8
+ return [];
9
+ }
10
+ export function validateLock(mode, duration, locale = "en") {
11
+ const errors = validateLockMode(mode, locale);
12
+ if (errors.length)
13
+ return errors;
14
+ if (mode === LockMode.Burn)
15
+ return [];
16
+ if (!Number.isInteger(duration) || duration < LOCK_MIN_SECONDS || duration > LOCK_MAX_SECONDS) {
17
+ return [err(ErrorCode.LockDurationInvalid, [duration], locale)];
18
+ }
19
+ return [];
20
+ }
21
+ export function validateLpAmounts(tokenAmount, nativeAmount, locale = "en") {
22
+ const errors = [];
23
+ if (tokenAmount === 0n)
24
+ errors.push(err(ErrorCode.ZeroAmount, ["token"], locale));
25
+ if (nativeAmount === 0n)
26
+ errors.push(err(ErrorCode.ZeroAmount, ["native"], locale));
27
+ return errors;
28
+ }
29
+ //# sourceMappingURL=liquidity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidity.js","sourceRoot":"","sources":["../../src/validation/liquidity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAG1C,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,SAAiB,IAAI;IAClE,IAAI,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE,SAAiB,IAAI;IAChF,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,gBAAgB,IAAI,QAAQ,GAAG,gBAAgB,EAAE,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,YAAoB,EAAE,SAAiB,IAAI;IAChG,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,WAAW,KAAK,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAClF,IAAI,YAAY,KAAK,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type LaunchError } from "../errors/codes.js";
2
+ import type { Locale } from "../errors/messages.js";
3
+ export declare function isNearAccountId(id: string): boolean;
4
+ export declare function isCardanoAddress(addr: string): boolean;
5
+ /** Solana pubkey: base58 of 32 bytes. */
6
+ export declare function isSolanaAddress(addr: string): boolean;
7
+ export declare function validateNearAccount(id: string, locale?: Locale): LaunchError[];
8
+ export declare function validateCardanoAddress(addr: string, locale?: Locale): LaunchError[];
9
+ export declare function validateSolanaAddress(addr: string, locale?: Locale): LaunchError[];
10
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/validation/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAID,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAsBrD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAGpF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAGzF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,WAAW,EAAE,CAGxF"}