@wuwei-labs/srsly 2.0.0-beta.24 → 2.0.0-beta.26
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/README.md +172 -61
- package/dist/cjs/codama/errors/srsly.js +7 -1
- package/dist/cjs/codama/errors/srsly.js.map +1 -1
- package/dist/cjs/contract/create.js +13 -2
- package/dist/cjs/contract/create.js.map +1 -1
- package/dist/cjs/index.js +25 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +12 -5
- package/dist/cjs/types/paymentFrequency.js +58 -0
- package/dist/cjs/types/paymentFrequency.js.map +1 -0
- package/dist/cjs/utils/config.js +36 -127
- package/dist/cjs/utils/config.js.map +1 -1
- package/dist/cjs/utils/constants.js +5 -22
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/duration.js +77 -0
- package/dist/cjs/utils/duration.js.map +1 -0
- package/dist/cjs/utils/index.js +2 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/pack-functions.js +148 -0
- package/dist/cjs/utils/pack-functions.js.map +1 -0
- package/dist/cjs/utils/paymentFrequency.js +60 -0
- package/dist/cjs/utils/paymentFrequency.js.map +1 -0
- package/dist/cjs/utils/solana-adapter.js +120 -0
- package/dist/cjs/utils/solana-adapter.js.map +1 -0
- package/dist/cjs/utils/types.js +6 -0
- package/dist/cjs/utils/types.js.map +1 -0
- package/dist/esm/codama/errors/srsly.js +6 -0
- package/dist/esm/codama/errors/srsly.js.map +1 -1
- package/dist/esm/contract/create.js +13 -2
- package/dist/esm/contract/create.js.map +1 -1
- package/dist/esm/index.js +8 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +12 -5
- package/dist/esm/types/paymentFrequency.js +53 -0
- package/dist/esm/types/paymentFrequency.js.map +1 -0
- package/dist/esm/utils/config.js +36 -128
- package/dist/esm/utils/config.js.map +1 -1
- package/dist/esm/utils/constants.js +4 -20
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/duration.js +68 -0
- package/dist/esm/utils/duration.js.map +1 -0
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/pack-functions.js +110 -0
- package/dist/esm/utils/pack-functions.js.map +1 -0
- package/dist/esm/utils/paymentFrequency.js +55 -0
- package/dist/esm/utils/paymentFrequency.js.map +1 -0
- package/dist/esm/utils/solana-adapter.js +82 -0
- package/dist/esm/utils/solana-adapter.js.map +1 -0
- package/dist/esm/utils/types.js +5 -0
- package/dist/esm/utils/types.js.map +1 -0
- package/dist/types/codama/errors/srsly.d.ts +5 -1
- package/dist/types/codama/errors/srsly.d.ts.map +1 -1
- package/dist/types/contract/create.d.ts +7 -5
- package/dist/types/contract/create.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/paymentFrequency.d.ts +44 -0
- package/dist/types/types/paymentFrequency.d.ts.map +1 -0
- package/dist/types/utils/config.d.ts +35 -18
- package/dist/types/utils/config.d.ts.map +1 -1
- package/dist/types/utils/constants.d.ts +8 -21
- package/dist/types/utils/constants.d.ts.map +1 -1
- package/dist/types/utils/duration.d.ts +56 -0
- package/dist/types/utils/duration.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/pack-functions.d.ts +18 -0
- package/dist/types/utils/pack-functions.d.ts.map +1 -0
- package/dist/types/utils/paymentFrequency.d.ts +18 -0
- package/dist/types/utils/paymentFrequency.d.ts.map +1 -0
- package/dist/types/utils/solana-adapter.d.ts +26 -0
- package/dist/types/utils/solana-adapter.d.ts.map +1 -0
- package/dist/types/utils/types.d.ts +14 -0
- package/dist/types/utils/types.d.ts.map +1 -0
- package/package.json +12 -5
- package/target/idl/srsly.json +10 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAsB,MAAM,UAAU,CAAC;AAClF
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAsB,MAAM,UAAU,CAAC;AAClF;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAmB;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iBAAiB;AACjB,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,iCAAiC;AAE/E,oEAAoE;AAEpE,iDAAiD;AAEjD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IACjE,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACjD,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,MAAM,sBAAsB,EAAE,CAAC;AACxC,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAsB;IAChE,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC1D,gFAAgF;IAChF,OAAO,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,MAAsB;IAC1E,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAsB;IACxD,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAsB;IACvD,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAA6C;IAC5E,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACrB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;IACtB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,OAAO;CACX,CAAC;AAEF,kEAAkE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { PAYMENT_FREQUENCY_CONSTANTS } from '../types/paymentFrequency';
|
|
2
|
+
/**
|
|
3
|
+
* Duration helper functions for converting time units to seconds
|
|
4
|
+
* Uses the same constants as the payment frequency system for consistency
|
|
5
|
+
*/
|
|
6
|
+
const { SECONDS_PER_DECASECOND, SECONDS_PER_MINUTE, SECONDS_PER_HOUR, SECONDS_PER_DAY, SECONDS_PER_WEEK, SECONDS_PER_MONTH } = PAYMENT_FREQUENCY_CONSTANTS;
|
|
7
|
+
/**
|
|
8
|
+
* Convert decaseconds (10 seconds) to seconds
|
|
9
|
+
* @param amount Number of decaseconds
|
|
10
|
+
* @returns Number of seconds
|
|
11
|
+
*/
|
|
12
|
+
export function decaseconds(amount) {
|
|
13
|
+
return amount * SECONDS_PER_DECASECOND;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Convert minutes to seconds
|
|
17
|
+
* @param amount Number of minutes
|
|
18
|
+
* @returns Number of seconds
|
|
19
|
+
*/
|
|
20
|
+
export function minutes(amount) {
|
|
21
|
+
return amount * SECONDS_PER_MINUTE;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Convert hours to seconds
|
|
25
|
+
* @param amount Number of hours
|
|
26
|
+
* @returns Number of seconds
|
|
27
|
+
*/
|
|
28
|
+
export function hours(amount) {
|
|
29
|
+
return amount * SECONDS_PER_HOUR;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Convert days to seconds
|
|
33
|
+
* @param amount Number of days
|
|
34
|
+
* @returns Number of seconds
|
|
35
|
+
*/
|
|
36
|
+
export function days(amount) {
|
|
37
|
+
return amount * SECONDS_PER_DAY;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Convert weeks to seconds
|
|
41
|
+
* @param amount Number of weeks
|
|
42
|
+
* @returns Number of seconds
|
|
43
|
+
*/
|
|
44
|
+
export function weeks(amount) {
|
|
45
|
+
return amount * SECONDS_PER_WEEK;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Convert months to seconds
|
|
49
|
+
* @param amount Number of months (31 days each)
|
|
50
|
+
* @returns Number of seconds
|
|
51
|
+
*/
|
|
52
|
+
export function months(amount) {
|
|
53
|
+
return amount * SECONDS_PER_MONTH;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* All duration helper functions
|
|
57
|
+
*/
|
|
58
|
+
export const duration = {
|
|
59
|
+
decaseconds,
|
|
60
|
+
minutes,
|
|
61
|
+
hours,
|
|
62
|
+
days,
|
|
63
|
+
weeks,
|
|
64
|
+
months,
|
|
65
|
+
// Also expose the raw constants for advanced users
|
|
66
|
+
constants: PAYMENT_FREQUENCY_CONSTANTS,
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=duration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../src/utils/duration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE;;;GAGG;AAEH,MAAM,EACJ,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EAClB,GAAG,2BAA2B,CAAC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM,GAAG,sBAAsB,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,OAAO,MAAM,GAAG,kBAAkB,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,OAAO,MAAM,GAAG,gBAAgB,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,MAAc;IACjC,OAAO,MAAM,GAAG,eAAe,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,OAAO,MAAM,GAAG,gBAAgB,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,MAAM,GAAG,iBAAiB,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW;IACX,OAAO;IACP,KAAK;IACL,IAAI;IACJ,KAAK;IACL,MAAM;IAEN,mDAAmD;IACnD,SAAS,EAAE,2BAA2B;CAC9B,CAAC"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pack function implementations for different Solana libraries
|
|
3
|
+
*/
|
|
4
|
+
import { resolveProgramAddresses } from './config';
|
|
5
|
+
/**
|
|
6
|
+
* Pack instruction using @solana/kit
|
|
7
|
+
*/
|
|
8
|
+
export async function packWithKit(instruction, feePayer, config) {
|
|
9
|
+
const kit = await import('@solana/kit');
|
|
10
|
+
const { createSolanaRpc, createSolanaRpcSubscriptions, createTransactionMessage, setTransactionMessageFeePayer, setTransactionMessageFeePayerSigner, setTransactionMessageLifetimeUsingBlockhash, appendTransactionMessageInstructions, compileTransaction, signTransactionMessageWithSigners, sendAndConfirmTransactionFactory, getSignatureFromTransaction, pipe, address } = kit;
|
|
11
|
+
const resolvedAddresses = resolveProgramAddresses(config);
|
|
12
|
+
if (!resolvedAddresses.rpcUrl) {
|
|
13
|
+
throw new Error('RPC URL is required for creating transactions. Please set it via setConfig({ rpcUrl: "..." })');
|
|
14
|
+
}
|
|
15
|
+
// Create RPC connection to get latest blockhash
|
|
16
|
+
const rpc = createSolanaRpc(resolvedAddresses.rpcUrl);
|
|
17
|
+
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
|
|
18
|
+
// Convert feePayer to proper Address type
|
|
19
|
+
const feePayerAddress = typeof feePayer === 'string' ? address(feePayer) : feePayer;
|
|
20
|
+
// Build unsigned transaction message
|
|
21
|
+
const transactionMessage = pipe(createTransactionMessage({ version: 0 }), (msg) => setTransactionMessageFeePayer(feePayerAddress, msg), (msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg), (msg) => appendTransactionMessageInstructions([instruction], msg));
|
|
22
|
+
// Compile to unsigned transaction
|
|
23
|
+
const unsignedTransaction = compileTransaction(transactionMessage);
|
|
24
|
+
return {
|
|
25
|
+
messageBytes: new Uint8Array(unsignedTransaction.messageBytes),
|
|
26
|
+
signatures: [], // Empty for unsigned transactions
|
|
27
|
+
send: async (signer) => {
|
|
28
|
+
// Create RPC connections for sending
|
|
29
|
+
const sendRpc = createSolanaRpc(resolvedAddresses.rpcUrl);
|
|
30
|
+
const rpcSubscriptions = createSolanaRpcSubscriptions(resolvedAddresses.rpcUrl.replace('https:', 'wss:').replace('http:', 'ws:'));
|
|
31
|
+
// Build transaction message with signer
|
|
32
|
+
const signerTransactionMessage = pipe(createTransactionMessage({ version: 0 }), (msg) => setTransactionMessageFeePayerSigner(signer, msg), (msg) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg), (msg) => appendTransactionMessageInstructions([instruction], msg));
|
|
33
|
+
// Sign transaction
|
|
34
|
+
const signedTransaction = await signTransactionMessageWithSigners(signerTransactionMessage);
|
|
35
|
+
// Send and confirm transaction
|
|
36
|
+
const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({
|
|
37
|
+
rpc: sendRpc,
|
|
38
|
+
rpcSubscriptions: rpcSubscriptions
|
|
39
|
+
});
|
|
40
|
+
try {
|
|
41
|
+
await sendAndConfirmTransaction(signedTransaction, {
|
|
42
|
+
commitment: config.transactionOptions?.commitment || 'confirmed',
|
|
43
|
+
skipPreflight: config.transactionOptions?.skipPreflight || false
|
|
44
|
+
});
|
|
45
|
+
// Extract and return the signature
|
|
46
|
+
const signature = getSignatureFromTransaction(signedTransaction);
|
|
47
|
+
return signature;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new Error(`Transaction failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Pack instruction using @solana/web3.js
|
|
57
|
+
*/
|
|
58
|
+
export async function packWithWeb3js(instruction, feePayer, config) {
|
|
59
|
+
const web3 = await import('@solana/web3.js');
|
|
60
|
+
const { Connection, Transaction, PublicKey, sendAndConfirmTransaction } = web3;
|
|
61
|
+
const resolvedAddresses = resolveProgramAddresses(config);
|
|
62
|
+
if (!resolvedAddresses.rpcUrl) {
|
|
63
|
+
throw new Error('RPC URL is required for creating transactions. Please set it via setConfig({ rpcUrl: "..." })');
|
|
64
|
+
}
|
|
65
|
+
const connection = new Connection(resolvedAddresses.rpcUrl, 'confirmed');
|
|
66
|
+
// Convert feePayer to PublicKey
|
|
67
|
+
const feePayerPubkey = typeof feePayer === 'string' ? new PublicKey(feePayer) : feePayer;
|
|
68
|
+
// Create transaction and add instruction
|
|
69
|
+
const transaction = new Transaction();
|
|
70
|
+
transaction.add(instruction);
|
|
71
|
+
transaction.feePayer = feePayerPubkey;
|
|
72
|
+
// Get recent blockhash
|
|
73
|
+
const { blockhash } = await connection.getLatestBlockhash();
|
|
74
|
+
transaction.recentBlockhash = blockhash;
|
|
75
|
+
return {
|
|
76
|
+
messageBytes: transaction.serializeMessage(),
|
|
77
|
+
signatures: [],
|
|
78
|
+
transaction, // Include the actual Transaction object
|
|
79
|
+
send: async (signer) => {
|
|
80
|
+
// Sign and send transaction
|
|
81
|
+
transaction.sign(signer);
|
|
82
|
+
const signature = await sendAndConfirmTransaction(connection, transaction, [signer], {
|
|
83
|
+
commitment: config.transactionOptions?.commitment || 'confirmed',
|
|
84
|
+
skipPreflight: config.transactionOptions?.skipPreflight || false
|
|
85
|
+
});
|
|
86
|
+
return signature;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Auto-detect and pack with the best available library
|
|
92
|
+
*/
|
|
93
|
+
export async function packWithAuto(instruction, feePayer, config) {
|
|
94
|
+
// Prefer @solana/kit if available
|
|
95
|
+
try {
|
|
96
|
+
await import('@solana/kit');
|
|
97
|
+
return await packWithKit(instruction, feePayer, config);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Fallback to @solana/web3.js
|
|
101
|
+
try {
|
|
102
|
+
await import('@solana/web3.js');
|
|
103
|
+
return await packWithWeb3js(instruction, feePayer, config);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
throw new Error('No Solana library found. Please install either @solana/kit (recommended) or @solana/web3.js as a peer dependency.');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=pack-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-functions.js","sourceRoot":"","sources":["../../../src/utils/pack-functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { PaymentFrequency } from '../codama/types/paymentFrequency';
|
|
2
|
+
import { PAYMENT_FREQUENCY_MAP, PAYMENT_FREQUENCY_CONSTANTS } from '../types/paymentFrequency';
|
|
3
|
+
/**
|
|
4
|
+
* Payment frequency conversion utilities
|
|
5
|
+
* Mirrors the Rust implementation in programs/srsly/src/utils.rs
|
|
6
|
+
* Uses auto-generated constants and mappings from Rust source
|
|
7
|
+
*/
|
|
8
|
+
// Auto-synced constants from Rust constants.rs
|
|
9
|
+
const { SECONDS_PER_DECASECOND, SECONDS_PER_MINUTE, SECONDS_PER_HOUR, SECONDS_PER_DAY, SECONDS_PER_WEEK, SECONDS_PER_MONTH } = PAYMENT_FREQUENCY_CONSTANTS;
|
|
10
|
+
/**
|
|
11
|
+
* Converts a PaymentFrequency enum value to seconds
|
|
12
|
+
* Mirrors the to_seconds() method from the Rust implementation
|
|
13
|
+
*/
|
|
14
|
+
export function paymentFrequencyToSeconds(frequency) {
|
|
15
|
+
switch (frequency) {
|
|
16
|
+
case PaymentFrequency.Decasecond:
|
|
17
|
+
return SECONDS_PER_DECASECOND;
|
|
18
|
+
case PaymentFrequency.Minute:
|
|
19
|
+
return SECONDS_PER_MINUTE;
|
|
20
|
+
case PaymentFrequency.Hourly:
|
|
21
|
+
return SECONDS_PER_HOUR;
|
|
22
|
+
case PaymentFrequency.Daily:
|
|
23
|
+
case PaymentFrequency.DailyOld:
|
|
24
|
+
return SECONDS_PER_DAY;
|
|
25
|
+
case PaymentFrequency.Weekly:
|
|
26
|
+
return SECONDS_PER_WEEK;
|
|
27
|
+
case PaymentFrequency.Monthly:
|
|
28
|
+
return SECONDS_PER_MONTH;
|
|
29
|
+
default:
|
|
30
|
+
throw new Error(`Unknown payment frequency: ${frequency}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Converts a payment frequency string to seconds
|
|
35
|
+
* Uses auto-generated mapping from Rust PaymentFrequency enum
|
|
36
|
+
*/
|
|
37
|
+
export function paymentFrequencyStringToSeconds(frequencyString) {
|
|
38
|
+
const frequency = PAYMENT_FREQUENCY_MAP[frequencyString];
|
|
39
|
+
if (frequency === undefined) {
|
|
40
|
+
throw new Error(`Invalid payment frequency string: ${frequencyString}`);
|
|
41
|
+
}
|
|
42
|
+
return paymentFrequencyToSeconds(frequency);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validates that a duration is a multiple of the payment frequency
|
|
46
|
+
* Uses auto-generated types from Rust PaymentFrequency enum
|
|
47
|
+
*/
|
|
48
|
+
export function validateDurationAlignment(duration, frequencyString) {
|
|
49
|
+
const durationNumber = Number(duration);
|
|
50
|
+
const frequencySeconds = paymentFrequencyStringToSeconds(frequencyString);
|
|
51
|
+
if (durationNumber % frequencySeconds !== 0) {
|
|
52
|
+
throw new Error(`Duration (${duration} seconds) must be a multiple of ${frequencyString} frequency (${frequencySeconds} seconds)`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=paymentFrequency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paymentFrequency.js","sourceRoot":"","sources":["../../../src/utils/paymentFrequency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAEL,qBAAqB,EACrB,2BAA2B,EAC5B,MAAM,2BAA2B,CAAC;AAEnC;;;;GAIG;AAEH,+CAA+C;AAC/C,MAAM,EACJ,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EAClB,GAAG,2BAA2B,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAA2B;IACnE,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,gBAAgB,CAAC,UAAU;YAC9B,OAAO,sBAAsB,CAAC;QAChC,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,kBAAkB,CAAC;QAC5B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,gBAAgB,CAAC;QAC1B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,QAAQ;YAC5B,OAAO,eAAe,CAAC;QACzB,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,gBAAgB,CAAC;QAC1B,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,iBAAiB,CAAC;QAC3B;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,eAAuC;IACrF,MAAM,SAAS,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,eAAe,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAyB,EACzB,eAAuC;IAEvC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC,eAAe,CAAC,CAAC;IAE1E,IAAI,cAAc,GAAG,gBAAgB,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,mCAAmC,eAAe,eAAe,gBAAgB,WAAW,CAClH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana library adapter for handling both @solana/kit and @solana/web3.js
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Detects which Solana libraries are available
|
|
6
|
+
*/
|
|
7
|
+
export async function detectSolanaLibraries() {
|
|
8
|
+
let hasKit = false;
|
|
9
|
+
let hasWeb3js = false;
|
|
10
|
+
try {
|
|
11
|
+
await import('@solana/kit');
|
|
12
|
+
hasKit = true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// @solana/kit not available
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
await import('@solana/web3.js');
|
|
19
|
+
hasWeb3js = true;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// @solana/web3.js not available
|
|
23
|
+
}
|
|
24
|
+
// Prefer @solana/kit if available, fallback to web3.js
|
|
25
|
+
const preferred = hasKit ? 'kit' : hasWeb3js ? 'web3js' : 'auto';
|
|
26
|
+
return { hasKit, hasWeb3js, preferred };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validates that at least one Solana library is available
|
|
30
|
+
*/
|
|
31
|
+
export async function validateSolanaLibraryAvailability() {
|
|
32
|
+
const detection = await detectSolanaLibraries();
|
|
33
|
+
if (!detection.hasKit && !detection.hasWeb3js) {
|
|
34
|
+
throw new Error('No Solana library found. Please install either @solana/kit (recommended) or @solana/web3.js as a peer dependency.');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the appropriate Solana library based on preference and availability
|
|
39
|
+
*/
|
|
40
|
+
export async function getSolanaLibrary(preference = 'auto') {
|
|
41
|
+
const detection = await detectSolanaLibraries();
|
|
42
|
+
let selectedLibrary;
|
|
43
|
+
switch (preference) {
|
|
44
|
+
case 'kit':
|
|
45
|
+
if (!detection.hasKit) {
|
|
46
|
+
throw new Error('@solana/kit is required but not available. Please install it as a peer dependency.');
|
|
47
|
+
}
|
|
48
|
+
selectedLibrary = 'kit';
|
|
49
|
+
break;
|
|
50
|
+
case 'web3js':
|
|
51
|
+
if (!detection.hasWeb3js) {
|
|
52
|
+
throw new Error('@solana/web3.js is required but not available. Please install it as a peer dependency.');
|
|
53
|
+
}
|
|
54
|
+
selectedLibrary = 'web3js';
|
|
55
|
+
break;
|
|
56
|
+
case 'auto':
|
|
57
|
+
default:
|
|
58
|
+
selectedLibrary = detection.preferred;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
const result = {
|
|
62
|
+
library: selectedLibrary
|
|
63
|
+
};
|
|
64
|
+
if (selectedLibrary === 'kit' || detection.hasKit) {
|
|
65
|
+
try {
|
|
66
|
+
result.kit = await import('@solana/kit');
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Handle import error gracefully
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (selectedLibrary === 'web3js' || detection.hasWeb3js) {
|
|
73
|
+
try {
|
|
74
|
+
result.web3js = await import('@solana/web3.js');
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Handle import error gracefully
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=solana-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana-adapter.js","sourceRoot":"","sources":["../../../src/utils/solana-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IAED,uDAAuD;IACvD,MAAM,SAAS,GAAkB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC;IACrD,MAAM,SAAS,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEhD,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,aAA4B,MAAM;IAKvE,MAAM,SAAS,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEhD,IAAI,eAA8B,CAAC;IAEnC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,KAAK;YACR,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;YACxG,CAAC;YACD,eAAe,GAAG,KAAK,CAAC;YACxB,MAAM;QAER,KAAK,QAAQ;YACX,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;YAC5G,CAAC;YACD,eAAe,GAAG,QAAQ,CAAC;YAC3B,MAAM;QAER,KAAK,MAAM,CAAC;QACZ;YACE,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC;YACtC,MAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAwD;QAClE,OAAO,EAAE,eAAe;KACzB,CAAC;IAEF,IAAI,eAAe,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,eAAe,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -48,7 +48,11 @@ export declare const SRSLY_ERROR__INVALID_ATLAS_CONVERSION_RATE = 6018;
|
|
|
48
48
|
export declare const SRSLY_ERROR__ACCOUNT_OWNED_BY_WRONG_PROGRAM = 6019;
|
|
49
49
|
/** InvalidOwnerProfile: Fleet owner profile does not match the provided owner profile. */
|
|
50
50
|
export declare const SRSLY_ERROR__INVALID_OWNER_PROFILE = 6020;
|
|
51
|
-
|
|
51
|
+
/** InvalidDurationMinimumAlignment: Duration minimum must be a multiple of the payment frequency interval. */
|
|
52
|
+
export declare const SRSLY_ERROR__INVALID_DURATION_MINIMUM_ALIGNMENT = 6021;
|
|
53
|
+
/** InvalidDurationMaximumAlignment: Duration maximum must be a multiple of the payment frequency interval. */
|
|
54
|
+
export declare const SRSLY_ERROR__INVALID_DURATION_MAXIMUM_ALIGNMENT = 6022;
|
|
55
|
+
export type SrslyError = typeof SRSLY_ERROR__ACCOUNT_OWNED_BY_WRONG_PROGRAM | typeof SRSLY_ERROR__CONTRACT_CLOSED | typeof SRSLY_ERROR__DEV_ONLY_FREQUENCY | typeof SRSLY_ERROR__EXPECTED_DAILY_FREQUENCY | typeof SRSLY_ERROR__FLEET_ALREADY_RENTED | typeof SRSLY_ERROR__INSUFFICIENT_CANCELLATION_NOTICE | typeof SRSLY_ERROR__INVALID_ATLAS_CONVERSION_RATE | typeof SRSLY_ERROR__INVALID_DURATION_MAXIMUM | typeof SRSLY_ERROR__INVALID_DURATION_MAXIMUM_ALIGNMENT | typeof SRSLY_ERROR__INVALID_DURATION_MINIMUM | typeof SRSLY_ERROR__INVALID_DURATION_MINIMUM_ALIGNMENT | typeof SRSLY_ERROR__INVALID_FEE_RATE | typeof SRSLY_ERROR__INVALID_OWNER_PROFILE | typeof SRSLY_ERROR__INVALID_PAYMENT_FREQUENCY | typeof SRSLY_ERROR__INVALID_RATE | typeof SRSLY_ERROR__INVALID_RATE_CALCULATION | typeof SRSLY_ERROR__INVALID_RENTAL_DURATION | typeof SRSLY_ERROR__INVALID_SUB_PROFILE_INVALIDATOR | typeof SRSLY_ERROR__INVALID_THREAD_CONTEXT | typeof SRSLY_ERROR__RENTAL_IS_ACTIVE | typeof SRSLY_ERROR__RENTAL_STATE_EXISTS | typeof SRSLY_ERROR__UNAUTHORIZED_CONFIG_UPDATE | typeof SRSLY_ERROR__UNSUPPORTED_MIGRATION_VERSION;
|
|
52
56
|
export declare function getSrslyErrorMessage(code: SrslyError): string;
|
|
53
57
|
export declare function isSrslyError<TProgramErrorCode extends SrslyError>(error: unknown, transactionMessage: {
|
|
54
58
|
instructions: Record<number, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"srsly.d.ts","sourceRoot":"","sources":["../../../../src/codama/errors/srsly.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,uCAAuC,EAC5C,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,oGAAoG;AACpG,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,+GAA+G;AAC/G,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,mGAAmG;AACnG,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,8EAA8E;AAC9E,eAAO,MAAM,iCAAiC,OAAS,CAAC;AACxD,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,OAAS,CAAC;AAChD,8GAA8G;AAC9G,eAAO,MAAM,sCAAsC,OAAS,CAAC;AAC7D,qEAAqE;AACrE,eAAO,MAAM,4CAA4C,OAAS,CAAC;AACnE,+GAA+G;AAC/G,eAAO,MAAM,6CAA6C,OAAS,CAAC;AACpE,8CAA8C;AAC9C,eAAO,MAAM,4BAA4B,OAAS,CAAC;AACnD,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,OAAS,CAAC;AACtD,wFAAwF;AACxF,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,4DAA4D;AAC5D,eAAO,MAAM,mCAAmC,OAAS,CAAC;AAC1D,8CAA8C;AAC9C,eAAO,MAAM,6BAA6B,OAAS,CAAC;AACpD,0EAA0E;AAC1E,eAAO,MAAM,gCAAgC,OAAS,CAAC;AACvD,8EAA8E;AAC9E,eAAO,MAAM,0CAA0C,OAAS,CAAC;AACjE,wGAAwG;AACxG,eAAO,MAAM,6BAA6B,OAAS,CAAC;AACpD,yFAAyF;AACzF,eAAO,MAAM,oCAAoC,OAAS,CAAC;AAC3D,+EAA+E;AAC/E,eAAO,MAAM,uCAAuC,OAAS,CAAC;AAC9D,yFAAyF;AACzF,eAAO,MAAM,0CAA0C,OAAS,CAAC;AACjE,yFAAyF;AACzF,eAAO,MAAM,2CAA2C,OAAS,CAAC;AAClE,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,OAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"srsly.d.ts","sourceRoot":"","sources":["../../../../src/codama/errors/srsly.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,uCAAuC,EAC5C,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,oGAAoG;AACpG,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,+GAA+G;AAC/G,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,mGAAmG;AACnG,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,8EAA8E;AAC9E,eAAO,MAAM,iCAAiC,OAAS,CAAC;AACxD,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,OAAS,CAAC;AAChD,8GAA8G;AAC9G,eAAO,MAAM,sCAAsC,OAAS,CAAC;AAC7D,qEAAqE;AACrE,eAAO,MAAM,4CAA4C,OAAS,CAAC;AACnE,+GAA+G;AAC/G,eAAO,MAAM,6CAA6C,OAAS,CAAC;AACpE,8CAA8C;AAC9C,eAAO,MAAM,4BAA4B,OAAS,CAAC;AACnD,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,OAAS,CAAC;AACtD,wFAAwF;AACxF,eAAO,MAAM,qCAAqC,OAAS,CAAC;AAC5D,4DAA4D;AAC5D,eAAO,MAAM,mCAAmC,OAAS,CAAC;AAC1D,8CAA8C;AAC9C,eAAO,MAAM,6BAA6B,OAAS,CAAC;AACpD,0EAA0E;AAC1E,eAAO,MAAM,gCAAgC,OAAS,CAAC;AACvD,8EAA8E;AAC9E,eAAO,MAAM,0CAA0C,OAAS,CAAC;AACjE,wGAAwG;AACxG,eAAO,MAAM,6BAA6B,OAAS,CAAC;AACpD,yFAAyF;AACzF,eAAO,MAAM,oCAAoC,OAAS,CAAC;AAC3D,+EAA+E;AAC/E,eAAO,MAAM,uCAAuC,OAAS,CAAC;AAC9D,yFAAyF;AACzF,eAAO,MAAM,0CAA0C,OAAS,CAAC;AACjE,yFAAyF;AACzF,eAAO,MAAM,2CAA2C,OAAS,CAAC;AAClE,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,OAAS,CAAC;AACzD,8GAA8G;AAC9G,eAAO,MAAM,+CAA+C,OAAS,CAAC;AACtE,8GAA8G;AAC9G,eAAO,MAAM,+CAA+C,OAAS,CAAC;AAEtE,MAAM,MAAM,UAAU,GAClB,OAAO,2CAA2C,GAClD,OAAO,4BAA4B,GACnC,OAAO,+BAA+B,GACtC,OAAO,qCAAqC,GAC5C,OAAO,iCAAiC,GACxC,OAAO,6CAA6C,GACpD,OAAO,0CAA0C,GACjD,OAAO,qCAAqC,GAC5C,OAAO,+CAA+C,GACtD,OAAO,qCAAqC,GAC5C,OAAO,+CAA+C,GACtD,OAAO,6BAA6B,GACpC,OAAO,kCAAkC,GACzC,OAAO,sCAAsC,GAC7C,OAAO,yBAAyB,GAChC,OAAO,qCAAqC,GAC5C,OAAO,oCAAoC,GAC3C,OAAO,4CAA4C,GACnD,OAAO,mCAAmC,GAC1C,OAAO,6BAA6B,GACpC,OAAO,gCAAgC,GACvC,OAAO,uCAAuC,GAC9C,OAAO,0CAA0C,CAAC;AA+BtD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAM7D;AAED,wBAAgB,YAAY,CAAC,iBAAiB,SAAS,UAAU,EAC/D,KAAK,EAAE,OAAO,EACd,kBAAkB,EAAE;IAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC3D,EACD,IAAI,CAAC,EAAE,iBAAiB,GACvB,KAAK,IAAI,WAAW,CAAC,OAAO,uCAAuC,CAAC,GACrE,QAAQ,CAAC;IAAE,OAAO,EAAE,QAAQ,CAAC;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAO7D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Address, TransactionSigner } from '@solana/kit';
|
|
2
2
|
import { type ConfigSelector } from '../utils/config';
|
|
3
|
+
import { PaymentFrequencyString } from '../types/paymentFrequency';
|
|
3
4
|
type CreateContractInstruction = any;
|
|
4
5
|
/**
|
|
5
6
|
* Simplified parameters for creating a rental contract
|
|
@@ -21,18 +22,19 @@ export interface CreateContractParams {
|
|
|
21
22
|
* The rental rate in ATLAS tokens
|
|
22
23
|
*/
|
|
23
24
|
rate: number | bigint;
|
|
24
|
-
/**
|
|
25
|
-
* The minimum rental duration in seconds
|
|
26
|
-
*/
|
|
27
|
-
durationMin: number | bigint;
|
|
28
25
|
/**
|
|
29
26
|
* The maximum rental duration in seconds
|
|
27
|
+
* Must be a multiple of the payment frequency interval
|
|
28
|
+
* e.g., 2592000 for "30 days" with daily frequency, 86400 for "24 hours" with hourly frequency
|
|
30
29
|
*/
|
|
31
30
|
durationMax: number | bigint;
|
|
32
31
|
/**
|
|
33
32
|
* The payment frequency (e.g., "daily", "weekly", "monthly")
|
|
33
|
+
* Valid values are auto-generated from Rust PaymentFrequency enum
|
|
34
|
+
* Note: Do not include the '@' prefix - it will be added automatically
|
|
35
|
+
* The minimum rental duration will be automatically set to the payment frequency interval
|
|
34
36
|
*/
|
|
35
|
-
paymentsFreq:
|
|
37
|
+
paymentsFreq: PaymentFrequencyString;
|
|
36
38
|
/**
|
|
37
39
|
* The owner key index
|
|
38
40
|
* Typically 0 unless the owner has multiple authorized keys
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/contract/create.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAmC,KAAK,cAAc,EAAsB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/contract/create.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAmC,KAAK,cAAc,EAAsB,MAAM,iBAAiB,CAAC;AAG3G,OAAO,EAAE,sBAAsB,EAA2B,MAAM,2BAA2B,CAAC;AAG5F,KAAK,yBAAyB,GAAG,GAAG,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtB;;;;OAIG;IACH,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7B;;;;;OAKG;IACH,YAAY,EAAE,sBAAsB,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC;AAkED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAAC,yBAAyB,CAAC,CAE3C;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAKhG"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,5 +2,8 @@ export * from "./contract";
|
|
|
2
2
|
export * from "./rental";
|
|
3
3
|
export * from "./utils";
|
|
4
4
|
export type { ContractState, RentalState, CreateContractInstruction, AcceptRentalInstruction, CancelRentalInstruction, CloseRentalInstruction, CloseContractInstruction, ResetRentalInstruction, ClockData, ThreadResponse } from "./codama";
|
|
5
|
-
export { PaymentFrequency } from "./
|
|
5
|
+
export { PaymentFrequency } from "./codama/types/paymentFrequency";
|
|
6
|
+
export { PaymentFrequencyString, VALID_PAYMENT_FREQUENCIES, PAYMENT_FREQUENCY_MAP, PAYMENT_FREQUENCY_CONSTANTS, getPaymentFrequencyFromString, isValidPaymentFrequency } from "./types/paymentFrequency";
|
|
7
|
+
export { paymentFrequencyToSeconds, paymentFrequencyStringToSeconds, validateDurationAlignment } from "./utils/paymentFrequency";
|
|
8
|
+
export { decaseconds, minutes, hours, days, weeks, months, duration } from "./utils/duration";
|
|
6
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAIxB,YAAY,EAEV,aAAa,EACb,WAAW,EAGX,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EAGtB,SAAS,EACT,cAAc,EACf,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAIxB,YAAY,EAEV,aAAa,EACb,WAAW,EAGX,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EAGtB,SAAS,EACT,cAAc,EACf,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACT,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTO-GENERATED from the Rust PaymentFrequency implementation.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE manually - it will be overwritten.
|
|
4
|
+
*
|
|
5
|
+
* Source: programs/srsly/src/utils.rs
|
|
6
|
+
* Generated by: generate.mjs
|
|
7
|
+
*/
|
|
8
|
+
import { PaymentFrequency } from '../codama/types/paymentFrequency';
|
|
9
|
+
/**
|
|
10
|
+
* User-facing payment frequency string type
|
|
11
|
+
* Auto-generated from Rust PaymentFrequency enum
|
|
12
|
+
*/
|
|
13
|
+
export type PaymentFrequencyString = 'hourly' | 'daily' | 'weekly' | 'monthly';
|
|
14
|
+
/**
|
|
15
|
+
* Array of all valid payment frequency strings
|
|
16
|
+
* Auto-generated from Rust PaymentFrequency enum
|
|
17
|
+
*/
|
|
18
|
+
export declare const VALID_PAYMENT_FREQUENCIES: readonly PaymentFrequencyString[];
|
|
19
|
+
/**
|
|
20
|
+
* Mapping from user-friendly strings to PaymentFrequency enum values
|
|
21
|
+
* Auto-generated from Rust PaymentFrequency enum
|
|
22
|
+
*/
|
|
23
|
+
export declare const PAYMENT_FREQUENCY_MAP: Record<PaymentFrequencyString, PaymentFrequency>;
|
|
24
|
+
/**
|
|
25
|
+
* Constants extracted from Rust constants.rs
|
|
26
|
+
* Auto-synced with Rust implementation
|
|
27
|
+
*/
|
|
28
|
+
export declare const PAYMENT_FREQUENCY_CONSTANTS: {
|
|
29
|
+
readonly SECONDS_PER_DECASECOND: 10;
|
|
30
|
+
readonly SECONDS_PER_MINUTE: 60;
|
|
31
|
+
readonly SECONDS_PER_HOUR: 3600;
|
|
32
|
+
readonly SECONDS_PER_DAY: 86400;
|
|
33
|
+
readonly SECONDS_PER_WEEK: 604800;
|
|
34
|
+
readonly SECONDS_PER_MONTH: 2678400;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Get PaymentFrequency enum value from user-friendly string
|
|
38
|
+
*/
|
|
39
|
+
export declare function getPaymentFrequencyFromString(frequencyString: PaymentFrequencyString): PaymentFrequency;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a string is a valid payment frequency
|
|
42
|
+
*/
|
|
43
|
+
export declare function isValidPaymentFrequency(value: string): value is PaymentFrequencyString;
|
|
44
|
+
//# sourceMappingURL=paymentFrequency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paymentFrequency.d.ts","sourceRoot":"","sources":["../../../src/types/paymentFrequency.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,sBAAsB,EAK7D,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,sBAAsB,EAAE,gBAAgB,CAKzE,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;CAO9B,CAAC;AAEX;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,eAAe,EAAE,sBAAsB,GAAG,gBAAgB,CAEvG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,sBAAsB,CAEtF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Network configuration for the SRSLY SDK
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { SolanaLibrary } from './solana-adapter';
|
|
5
|
+
import { UniversalAddress, UniversalTransactionSigner } from './types';
|
|
5
6
|
export type ProgramSet = 'mainnet' | 'atlasnet' | 'holosim';
|
|
6
7
|
/**
|
|
7
8
|
* Configuration options that can be set globally or overridden per call
|
|
@@ -13,6 +14,7 @@ export interface ConfigOptions {
|
|
|
13
14
|
gameId?: string;
|
|
14
15
|
atlasMint?: string;
|
|
15
16
|
rpcUrl?: string;
|
|
17
|
+
solanaLibrary?: SolanaLibrary;
|
|
16
18
|
transactionOptions?: {
|
|
17
19
|
commitment?: 'processed' | 'confirmed' | 'finalized';
|
|
18
20
|
skipPreflight?: boolean;
|
|
@@ -63,6 +65,12 @@ export declare function getConfig(): ConfigOptions;
|
|
|
63
65
|
* Clear global configuration (resets to atlasnet program set defaults)
|
|
64
66
|
*/
|
|
65
67
|
export declare function clearConfig(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get the effective configuration by merging global config with provided overrides
|
|
70
|
+
* @param overrides Optional configuration overrides
|
|
71
|
+
* @returns Merged configuration with global defaults and any overrides
|
|
72
|
+
*/
|
|
73
|
+
export declare function getEffectiveConfig(overrides?: ConfigOptions): ConfigOptions;
|
|
66
74
|
/**
|
|
67
75
|
* Get the single codama module (network agnostic)
|
|
68
76
|
* @param modulePath The module type ('instructions' or 'programs')
|
|
@@ -83,7 +91,7 @@ export interface PackedTransaction {
|
|
|
83
91
|
/** Transaction signature map (empty for unsigned transactions) */
|
|
84
92
|
signatures: any;
|
|
85
93
|
/**
|
|
86
|
-
* Send the packed transaction using
|
|
94
|
+
* Send the packed transaction using the configured Solana library
|
|
87
95
|
*
|
|
88
96
|
* @param signer The transaction signer that will sign and pay for the transaction
|
|
89
97
|
* @returns Promise resolving to the transaction signature
|
|
@@ -101,7 +109,7 @@ export interface PackedTransaction {
|
|
|
101
109
|
* .send(signer);
|
|
102
110
|
* ```
|
|
103
111
|
*/
|
|
104
|
-
send(signer:
|
|
112
|
+
send(signer: UniversalTransactionSigner): Promise<string>;
|
|
105
113
|
}
|
|
106
114
|
/**
|
|
107
115
|
* Chainable PackedTransaction that allows fluent .pack().send() without double await
|
|
@@ -121,7 +129,7 @@ export interface ChainablePackedTransaction extends PackedTransaction {
|
|
|
121
129
|
* .send(signer);
|
|
122
130
|
* ```
|
|
123
131
|
*/
|
|
124
|
-
send(signer:
|
|
132
|
+
send(signer: UniversalTransactionSigner): Promise<string>;
|
|
125
133
|
}
|
|
126
134
|
/**
|
|
127
135
|
* Configuration selector for overriding network and constants
|
|
@@ -137,33 +145,42 @@ export interface ConfigSelector<T> extends PromiseLike<T> {
|
|
|
137
145
|
*/
|
|
138
146
|
build(): Promise<T>;
|
|
139
147
|
/**
|
|
140
|
-
* Pack
|
|
148
|
+
* Pack using @solana/kit (modern, recommended)
|
|
141
149
|
*
|
|
142
150
|
* @param feePayer The address that will pay for the transaction fees
|
|
143
|
-
* @returns ChainablePackedTransaction
|
|
151
|
+
* @returns ChainablePackedTransaction optimized for @solana/kit
|
|
144
152
|
*
|
|
145
153
|
* @example
|
|
146
154
|
* ```typescript
|
|
147
|
-
* // Option 1: Pack and send (server-side/CLI) - Now chainable!
|
|
148
155
|
* import { createKeyPairSignerFromBytes } from '@solana/kit';
|
|
149
156
|
* const signer = await createKeyPairSignerFromBytes(keypairBytes);
|
|
150
157
|
* const signature = await createContract(params)
|
|
151
|
-
* .
|
|
158
|
+
* .packKit(signer.address)
|
|
152
159
|
* .send(signer);
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
packKit(feePayer: UniversalAddress): ChainablePackedTransaction;
|
|
163
|
+
/**
|
|
164
|
+
* Pack using @solana/web3.js (wallet adapter compatibility)
|
|
153
165
|
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* import { VersionedTransaction, VersionedMessage } from '@solana/web3.js';
|
|
157
|
-
* const versionedMessage = VersionedMessage.deserialize(packedTx.messageBytes);
|
|
158
|
-
* const versionedTx = new VersionedTransaction(versionedMessage);
|
|
159
|
-
* const signedTx = await wallet.signTransaction(versionedTx);
|
|
160
|
-
* // ... send with connection.sendRawTransaction(signedTx.serialize())
|
|
166
|
+
* @param feePayer The address that will pay for the transaction fees
|
|
167
|
+
* @returns ChainablePackedTransaction optimized for @solana/web3.js
|
|
161
168
|
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* const packedTx = await createContract(params).packWeb3js(wallet.publicKey);
|
|
172
|
+
* const versionedTx = new VersionedTransaction(VersionedMessage.deserialize(packedTx.messageBytes));
|
|
173
|
+
* const signedTx = await wallet.signTransaction(versionedTx);
|
|
164
174
|
* ```
|
|
165
175
|
*/
|
|
166
|
-
|
|
176
|
+
packWeb3js(feePayer: UniversalAddress): ChainablePackedTransaction;
|
|
177
|
+
/**
|
|
178
|
+
* Pack using the configured or best available library
|
|
179
|
+
*
|
|
180
|
+
* @param feePayer The address that will pay for the transaction fees
|
|
181
|
+
* @returns ChainablePackedTransaction using the best available library
|
|
182
|
+
*/
|
|
183
|
+
pack(feePayer: UniversalAddress): ChainablePackedTransaction;
|
|
167
184
|
}
|
|
168
185
|
/**
|
|
169
186
|
* Create the initial fluent config selector for a function.
|