@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.
Files changed (77) hide show
  1. package/README.md +172 -61
  2. package/dist/cjs/codama/errors/srsly.js +7 -1
  3. package/dist/cjs/codama/errors/srsly.js.map +1 -1
  4. package/dist/cjs/contract/create.js +13 -2
  5. package/dist/cjs/contract/create.js.map +1 -1
  6. package/dist/cjs/index.js +25 -4
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/package.json +12 -5
  9. package/dist/cjs/types/paymentFrequency.js +58 -0
  10. package/dist/cjs/types/paymentFrequency.js.map +1 -0
  11. package/dist/cjs/utils/config.js +36 -127
  12. package/dist/cjs/utils/config.js.map +1 -1
  13. package/dist/cjs/utils/constants.js +5 -22
  14. package/dist/cjs/utils/constants.js.map +1 -1
  15. package/dist/cjs/utils/duration.js +77 -0
  16. package/dist/cjs/utils/duration.js.map +1 -0
  17. package/dist/cjs/utils/index.js +2 -0
  18. package/dist/cjs/utils/index.js.map +1 -1
  19. package/dist/cjs/utils/pack-functions.js +148 -0
  20. package/dist/cjs/utils/pack-functions.js.map +1 -0
  21. package/dist/cjs/utils/paymentFrequency.js +60 -0
  22. package/dist/cjs/utils/paymentFrequency.js.map +1 -0
  23. package/dist/cjs/utils/solana-adapter.js +120 -0
  24. package/dist/cjs/utils/solana-adapter.js.map +1 -0
  25. package/dist/cjs/utils/types.js +6 -0
  26. package/dist/cjs/utils/types.js.map +1 -0
  27. package/dist/esm/codama/errors/srsly.js +6 -0
  28. package/dist/esm/codama/errors/srsly.js.map +1 -1
  29. package/dist/esm/contract/create.js +13 -2
  30. package/dist/esm/contract/create.js.map +1 -1
  31. package/dist/esm/index.js +8 -2
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/package.json +12 -5
  34. package/dist/esm/types/paymentFrequency.js +53 -0
  35. package/dist/esm/types/paymentFrequency.js.map +1 -0
  36. package/dist/esm/utils/config.js +36 -128
  37. package/dist/esm/utils/config.js.map +1 -1
  38. package/dist/esm/utils/constants.js +4 -20
  39. package/dist/esm/utils/constants.js.map +1 -1
  40. package/dist/esm/utils/duration.js +68 -0
  41. package/dist/esm/utils/duration.js.map +1 -0
  42. package/dist/esm/utils/index.js +2 -0
  43. package/dist/esm/utils/index.js.map +1 -1
  44. package/dist/esm/utils/pack-functions.js +110 -0
  45. package/dist/esm/utils/pack-functions.js.map +1 -0
  46. package/dist/esm/utils/paymentFrequency.js +55 -0
  47. package/dist/esm/utils/paymentFrequency.js.map +1 -0
  48. package/dist/esm/utils/solana-adapter.js +82 -0
  49. package/dist/esm/utils/solana-adapter.js.map +1 -0
  50. package/dist/esm/utils/types.js +5 -0
  51. package/dist/esm/utils/types.js.map +1 -0
  52. package/dist/types/codama/errors/srsly.d.ts +5 -1
  53. package/dist/types/codama/errors/srsly.d.ts.map +1 -1
  54. package/dist/types/contract/create.d.ts +7 -5
  55. package/dist/types/contract/create.d.ts.map +1 -1
  56. package/dist/types/index.d.ts +4 -1
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/dist/types/types/paymentFrequency.d.ts +44 -0
  59. package/dist/types/types/paymentFrequency.d.ts.map +1 -0
  60. package/dist/types/utils/config.d.ts +35 -18
  61. package/dist/types/utils/config.d.ts.map +1 -1
  62. package/dist/types/utils/constants.d.ts +8 -21
  63. package/dist/types/utils/constants.d.ts.map +1 -1
  64. package/dist/types/utils/duration.d.ts +56 -0
  65. package/dist/types/utils/duration.d.ts.map +1 -0
  66. package/dist/types/utils/index.d.ts +2 -0
  67. package/dist/types/utils/index.d.ts.map +1 -1
  68. package/dist/types/utils/pack-functions.d.ts +18 -0
  69. package/dist/types/utils/pack-functions.d.ts.map +1 -0
  70. package/dist/types/utils/paymentFrequency.d.ts +18 -0
  71. package/dist/types/utils/paymentFrequency.d.ts.map +1 -0
  72. package/dist/types/utils/solana-adapter.d.ts +26 -0
  73. package/dist/types/utils/solana-adapter.d.ts.map +1 -0
  74. package/dist/types/utils/types.d.ts +14 -0
  75. package/dist/types/utils/types.d.ts.map +1 -0
  76. package/package.json +12 -5
  77. package/target/idl/srsly.json +10 -0
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1,4 +1,6 @@
1
1
  export * from "./constants";
2
2
  export * from "./profiles";
3
3
  export * from "./config";
4
+ export * from "./paymentFrequency";
5
+ export * from "./duration";
4
6
  //# sourceMappingURL=index.js.map
@@ -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,5 @@
1
+ /**
2
+ * Universal types that work with both @solana/kit and @solana/web3.js
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -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
- 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_MINIMUM | 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;
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;AAEzD,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,qCAAqC,GAC5C,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;AA6BtD,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
+ {"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: string;
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;AAI3G,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;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7B;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;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;AAuDD;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
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"}
@@ -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 "./utils/constants";
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,mBAAmB,CAAC"}
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 { type Address, type TransactionSigner } from '@solana/kit';
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 @solana/kit (for server-side/CLI usage)
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: TransactionSigner): Promise<string>;
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: TransactionSigner): Promise<string>;
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 the instruction into an unsigned transaction ready for signing and sending
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 with send() method (no double await needed!)
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
- * .pack(signer.address)
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
- * // Option 2: Pack for wallet adapter (browser) - Convert to web3.js format
155
- * const packedTx = await createContract(params).pack(wallet.publicKey);
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
- * // Option 3: Get just the raw message bytes for custom handling
163
- * const messageBytes = packedTx.messageBytes;
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
- pack(feePayer: Address | string): ChainablePackedTransaction;
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.