@wuwei-labs/srsly 2.0.0-beta.2 → 2.0.0-beta.20
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 +283 -111
- package/dist/cjs/codama/accounts/config.js +88 -0
- package/dist/cjs/codama/accounts/config.js.map +1 -0
- package/dist/cjs/codama/accounts/contractState.js +17 -39
- package/dist/cjs/codama/accounts/contractState.js.map +1 -1
- package/dist/cjs/codama/accounts/index.js +1 -1
- package/dist/cjs/codama/accounts/index.js.map +1 -1
- package/dist/cjs/codama/accounts/rentalState.js +18 -33
- package/dist/cjs/codama/accounts/rentalState.js.map +1 -1
- package/dist/cjs/codama/accounts/thread.js +15 -32
- package/dist/cjs/codama/accounts/thread.js.map +1 -1
- package/dist/cjs/codama/errors/srsly.js +24 -3
- package/dist/cjs/codama/errors/srsly.js.map +1 -1
- package/dist/cjs/codama/instructions/acceptRental.js +202 -224
- package/dist/cjs/codama/instructions/acceptRental.js.map +1 -1
- package/dist/cjs/codama/instructions/cancelRental.js +100 -136
- package/dist/cjs/codama/instructions/cancelRental.js.map +1 -1
- package/dist/cjs/codama/instructions/closeContract.js +95 -116
- package/dist/cjs/codama/instructions/closeContract.js.map +1 -1
- package/dist/cjs/codama/instructions/closeRental.js +119 -132
- package/dist/cjs/codama/instructions/closeRental.js.map +1 -1
- package/dist/cjs/codama/instructions/createContract.js +127 -143
- package/dist/cjs/codama/instructions/createContract.js.map +1 -1
- package/dist/cjs/codama/instructions/index.js +2 -1
- package/dist/cjs/codama/instructions/index.js.map +1 -1
- package/dist/cjs/codama/instructions/initializeConfig.js +131 -0
- package/dist/cjs/codama/instructions/initializeConfig.js.map +1 -0
- package/dist/cjs/codama/instructions/payRental.js +125 -129
- package/dist/cjs/codama/instructions/payRental.js.map +1 -1
- package/dist/cjs/codama/instructions/resetRental.js +55 -77
- package/dist/cjs/codama/instructions/resetRental.js.map +1 -1
- package/dist/cjs/codama/instructions/updateConfig.js +145 -0
- package/dist/cjs/codama/instructions/updateConfig.js.map +1 -0
- package/dist/cjs/codama/programs/srsly.js +12 -8
- package/dist/cjs/codama/programs/srsly.js.map +1 -1
- package/dist/cjs/codama/shared/index.js +6 -2
- package/dist/cjs/codama/shared/index.js.map +1 -1
- package/dist/cjs/codama/types/trigger.js +1 -1
- package/dist/cjs/codama/types/trigger.js.map +1 -1
- package/dist/cjs/codama/types/triggerContext.js +1 -1
- package/dist/cjs/codama/types/triggerContext.js.map +1 -1
- package/dist/cjs/contract/close.js +75 -34
- package/dist/cjs/contract/close.js.map +1 -1
- package/dist/cjs/contract/create.js +59 -43
- package/dist/cjs/contract/create.js.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +54 -0
- package/dist/cjs/rental/accept.js +68 -40
- package/dist/cjs/rental/accept.js.map +1 -1
- package/dist/cjs/rental/cancel.js +36 -28
- package/dist/cjs/rental/cancel.js.map +1 -1
- package/dist/cjs/rental/close.js +37 -29
- package/dist/cjs/rental/close.js.map +1 -1
- package/dist/cjs/rental/reset.js +46 -42
- package/dist/cjs/rental/reset.js.map +1 -1
- package/dist/cjs/utils/config.js +303 -0
- package/dist/cjs/utils/config.js.map +1 -0
- package/dist/cjs/utils/constants.js +69 -9
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/profiles.js +96 -95
- package/dist/cjs/utils/profiles.js.map +1 -1
- package/dist/esm/codama/accounts/config.js +76 -0
- package/dist/esm/codama/accounts/config.js.map +1 -0
- package/dist/esm/codama/accounts/contractState.js +3 -7
- package/dist/esm/codama/accounts/contractState.js.map +1 -1
- package/dist/esm/codama/accounts/index.js +1 -1
- package/dist/esm/codama/accounts/index.js.map +1 -1
- package/dist/esm/codama/accounts/rentalState.js +3 -1
- package/dist/esm/codama/accounts/rentalState.js.map +1 -1
- package/dist/esm/codama/errors/srsly.js +23 -2
- package/dist/esm/codama/errors/srsly.js.map +1 -1
- package/dist/esm/codama/instructions/acceptRental.js +30 -39
- package/dist/esm/codama/instructions/acceptRental.js.map +1 -1
- package/dist/esm/codama/instructions/cancelRental.js +10 -33
- package/dist/esm/codama/instructions/cancelRental.js.map +1 -1
- package/dist/esm/codama/instructions/closeContract.js +17 -25
- package/dist/esm/codama/instructions/closeContract.js.map +1 -1
- package/dist/esm/codama/instructions/closeRental.js +19 -19
- package/dist/esm/codama/instructions/closeRental.js.map +1 -1
- package/dist/esm/codama/instructions/createContract.js +13 -16
- package/dist/esm/codama/instructions/createContract.js.map +1 -1
- package/dist/esm/codama/instructions/index.js +2 -1
- package/dist/esm/codama/instructions/index.js.map +1 -1
- package/dist/esm/codama/instructions/initializeConfig.js +121 -0
- package/dist/esm/codama/instructions/initializeConfig.js.map +1 -0
- package/dist/esm/codama/instructions/payRental.js +34 -25
- package/dist/esm/codama/instructions/payRental.js.map +1 -1
- package/dist/esm/codama/instructions/resetRental.js +0 -9
- package/dist/esm/codama/instructions/resetRental.js.map +1 -1
- package/dist/esm/codama/instructions/updateConfig.js +135 -0
- package/dist/esm/codama/instructions/updateConfig.js.map +1 -0
- package/dist/esm/codama/programs/srsly.js +12 -8
- package/dist/esm/codama/programs/srsly.js.map +1 -1
- package/dist/esm/contract/close.js +68 -16
- package/dist/esm/contract/close.js.map +1 -1
- package/dist/esm/contract/create.js +60 -33
- package/dist/esm/contract/create.js.map +1 -1
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +54 -0
- package/dist/esm/rental/accept.js +70 -31
- package/dist/esm/rental/accept.js.map +1 -1
- package/dist/esm/rental/cancel.js +37 -18
- package/dist/esm/rental/cancel.js.map +1 -1
- package/dist/esm/rental/close.js +38 -19
- package/dist/esm/rental/close.js.map +1 -1
- package/dist/esm/rental/reset.js +48 -33
- package/dist/esm/rental/reset.js.map +1 -1
- package/dist/esm/utils/config.js +261 -0
- package/dist/esm/utils/config.js.map +1 -0
- package/dist/esm/utils/constants.js +60 -7
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/profiles.js +39 -19
- package/dist/esm/utils/profiles.js.map +1 -1
- package/dist/types/codama/accounts/config.d.ts +52 -0
- package/dist/types/codama/accounts/config.d.ts.map +1 -0
- package/dist/types/codama/accounts/contractState.d.ts +2 -4
- package/dist/types/codama/accounts/contractState.d.ts.map +1 -1
- package/dist/types/codama/accounts/index.d.ts +1 -1
- package/dist/types/codama/accounts/index.d.ts.map +1 -1
- package/dist/types/codama/accounts/rentalState.d.ts +2 -0
- package/dist/types/codama/accounts/rentalState.d.ts.map +1 -1
- package/dist/types/codama/errors/srsly.d.ts +16 -2
- package/dist/types/codama/errors/srsly.d.ts.map +1 -1
- package/dist/types/codama/instructions/acceptRental.d.ts +41 -34
- package/dist/types/codama/instructions/acceptRental.d.ts.map +1 -1
- package/dist/types/codama/instructions/cancelRental.d.ts +14 -10
- package/dist/types/codama/instructions/cancelRental.d.ts.map +1 -1
- package/dist/types/codama/instructions/closeContract.d.ts +29 -21
- package/dist/types/codama/instructions/closeContract.d.ts.map +1 -1
- package/dist/types/codama/instructions/closeRental.d.ts +20 -12
- package/dist/types/codama/instructions/closeRental.d.ts.map +1 -1
- package/dist/types/codama/instructions/createContract.d.ts +27 -23
- package/dist/types/codama/instructions/createContract.d.ts.map +1 -1
- package/dist/types/codama/instructions/index.d.ts +2 -1
- package/dist/types/codama/instructions/index.d.ts.map +1 -1
- package/dist/types/codama/instructions/initializeConfig.d.ts +60 -0
- package/dist/types/codama/instructions/initializeConfig.d.ts.map +1 -0
- package/dist/types/codama/instructions/payRental.d.ts +28 -13
- package/dist/types/codama/instructions/payRental.d.ts.map +1 -1
- package/dist/types/codama/instructions/resetRental.d.ts +3 -3
- package/dist/types/codama/instructions/resetRental.d.ts.map +1 -1
- package/dist/types/codama/instructions/updateConfig.d.ts +93 -0
- package/dist/types/codama/instructions/updateConfig.d.ts.map +1 -0
- package/dist/types/codama/programs/srsly.d.ts +11 -8
- package/dist/types/codama/programs/srsly.d.ts.map +1 -1
- package/dist/types/contract/close.d.ts +20 -24
- package/dist/types/contract/close.d.ts.map +1 -1
- package/dist/types/contract/create.d.ts +34 -22
- 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/rental/accept.d.ts +42 -20
- package/dist/types/rental/accept.d.ts.map +1 -1
- package/dist/types/rental/cancel.d.ts +16 -11
- package/dist/types/rental/cancel.d.ts.map +1 -1
- package/dist/types/rental/close.d.ts +16 -11
- package/dist/types/rental/close.d.ts.map +1 -1
- package/dist/types/rental/reset.d.ts +17 -20
- package/dist/types/rental/reset.d.ts.map +1 -1
- package/dist/types/utils/config.d.ts +167 -0
- package/dist/types/utils/config.d.ts.map +1 -0
- package/dist/types/utils/constants.d.ts +23 -7
- package/dist/types/utils/constants.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/profiles.d.ts +14 -8
- package/dist/types/utils/profiles.d.ts.map +1 -1
- package/package.json +36 -14
- package/target/idl/srsly.json +3279 -0
- package/target/types/srsly.ts +1 -0
- package/dist/cjs/codama/accounts/fleet.js +0 -94
- package/dist/cjs/codama/accounts/fleet.js.map +0 -1
- package/dist/cjs/codama/instructions/normalizeAdmin.js +0 -165
- package/dist/cjs/codama/instructions/normalizeAdmin.js.map +0 -1
- package/dist/esm/codama/accounts/fleet.js +0 -64
- package/dist/esm/codama/accounts/fleet.js.map +0 -1
- package/dist/esm/codama/instructions/normalizeAdmin.js +0 -142
- package/dist/esm/codama/instructions/normalizeAdmin.js.map +0 -1
- package/dist/types/codama/accounts/fleet.d.ts +0 -38
- package/dist/types/codama/accounts/fleet.d.ts.map +0 -1
- package/dist/types/codama/instructions/normalizeAdmin.d.ts +0 -67
- package/dist/types/codama/instructions/normalizeAdmin.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -4,194 +4,366 @@
|
|
|
4
4
|
[](https://www.typescriptlang.org/)
|
|
5
5
|
[](https://solana.com/)
|
|
6
6
|
|
|
7
|
-
A TypeScript SDK for
|
|
7
|
+
A TypeScript SDK for building and sending Solana transactions to interact with the SRSLY (Space Rental from SLY) program - a decentralized rental system for Star Atlas fleets.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## What This SDK Does
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The SRSLY SDK is a complete toolkit that helps you create Solana transactions for fleet rentals. It provides:
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
- ✅ Account derivation and validation
|
|
14
|
+
- ✅ Instruction data encoding
|
|
15
|
+
- ✅ Type-safe parameter handling
|
|
16
|
+
- ✅ Direct transaction sending via `.send()` (server/CLI)
|
|
17
|
+
- ✅ Unsigned transaction building via `.pack()` (browser/wallets)
|
|
18
|
+
- ✅ Wallet-agnostic design (works with any signing method)
|
|
19
|
+
|
|
20
|
+
**Current Status**: Full instruction building, transaction packing, and direct sending support.
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
## Installation
|
|
18
23
|
|
|
19
24
|
```bash
|
|
25
|
+
npm install @wuwei-labs/srsly
|
|
26
|
+
# or
|
|
20
27
|
pnpm add @wuwei-labs/srsly
|
|
28
|
+
# or
|
|
29
|
+
yarn add @wuwei-labs/srsly
|
|
21
30
|
```
|
|
22
31
|
|
|
23
|
-
|
|
32
|
+
## Quick Start
|
|
24
33
|
|
|
25
|
-
|
|
26
|
-
|
|
34
|
+
### Option 1: Pack and Send (Server/CLI)
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { createContract, setConfig } from '@wuwei-labs/srsly';
|
|
38
|
+
import { createKeyPairSignerFromBytes } from '@solana/kit';
|
|
39
|
+
|
|
40
|
+
// 1. Configure SDK with RPC endpoint
|
|
41
|
+
setConfig({
|
|
42
|
+
programs: 'atlasnet',
|
|
43
|
+
rpcUrl: 'https://api.atlasnet.solana.com'
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// 2. Create signer from keypair
|
|
47
|
+
const signer = await createKeyPairSignerFromBytes(keypairBytes);
|
|
48
|
+
|
|
49
|
+
// 3. Pack transaction then send in one step
|
|
50
|
+
const signature = await createContract({
|
|
51
|
+
owner: signer,
|
|
52
|
+
fleet: fleetAddress,
|
|
53
|
+
ownerProfile: profileAddress,
|
|
54
|
+
rate: 1000000, // ATLAS tokens
|
|
55
|
+
durationMin: 86400, // 1 day
|
|
56
|
+
durationMax: 604800, // 1 week
|
|
57
|
+
paymentsFreq: 'daily'
|
|
58
|
+
})
|
|
59
|
+
.pack(signer.address) // Pack with fee payer
|
|
60
|
+
.send(signer); // Send with signer
|
|
61
|
+
|
|
62
|
+
console.log('Transaction signature:', signature);
|
|
63
|
+
|
|
64
|
+
// With custom transaction options
|
|
65
|
+
const signature = await createContract(params)
|
|
66
|
+
.set({
|
|
67
|
+
transactionOptions: {
|
|
68
|
+
commitment: 'finalized',
|
|
69
|
+
skipPreflight: true
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
.pack(signer.address)
|
|
73
|
+
.send(signer);
|
|
27
74
|
```
|
|
28
75
|
|
|
29
|
-
|
|
76
|
+
### Option 2: Pack for Wallet Adapters (Browser)
|
|
30
77
|
|
|
31
78
|
```typescript
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
createContract,
|
|
35
|
-
acceptRental,
|
|
36
|
-
getSrslyProgram,
|
|
37
|
-
ContractState,
|
|
38
|
-
RentalState
|
|
39
|
-
} from '@wuwei-labs/srsly';
|
|
79
|
+
import { createContract, setConfig } from '@wuwei-labs/srsly';
|
|
40
80
|
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// Create a rental contract
|
|
46
|
-
const contractInstruction = await createContract({
|
|
47
|
-
rate: 1000000, // Rate in lamports
|
|
48
|
-
durationMin: 86400, // 1 day in seconds
|
|
49
|
-
durationMax: 604800, // 1 week in seconds
|
|
50
|
-
paymentFreq: 'daily',
|
|
51
|
-
ownerKeyIndex: 0
|
|
81
|
+
// 1. Configure SDK with RPC endpoint for blockhash
|
|
82
|
+
setConfig({
|
|
83
|
+
programs: 'atlasnet',
|
|
84
|
+
rpcUrl: 'https://api.atlasnet.solana.com'
|
|
52
85
|
});
|
|
53
86
|
|
|
54
|
-
//
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
87
|
+
// 2. Pack transaction for wallet adapter
|
|
88
|
+
const packedTx = await createContract({
|
|
89
|
+
owner: walletPublicKey,
|
|
90
|
+
fleet: fleetAddress,
|
|
91
|
+
ownerProfile: profileAddress,
|
|
92
|
+
rate: 1000000, // ATLAS tokens
|
|
93
|
+
durationMin: 86400, // 1 day
|
|
94
|
+
durationMax: 604800, // 1 week
|
|
95
|
+
paymentsFreq: 'daily'
|
|
96
|
+
}).pack(walletPublicKey); // Pack with fee payer address
|
|
97
|
+
|
|
98
|
+
// 3. Sign and send with wallet adapter
|
|
99
|
+
import { useWallet } from '@solana/wallet-adapter-react';
|
|
100
|
+
import { VersionedTransaction } from '@solana/web3.js';
|
|
101
|
+
const wallet = useWallet();
|
|
102
|
+
const versionedTx = VersionedTransaction.deserialize(packedTx.messageBytes);
|
|
103
|
+
const signedTx = await wallet.signTransaction(versionedTx);
|
|
104
|
+
// ... send with connection.sendRawTransaction(signedTx.serialize())
|
|
105
|
+
|
|
106
|
+
// Note: packedTx also has a .send() method, but it requires a TransactionSigner
|
|
107
|
+
// which wallet adapters don't provide directly
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Option 3: Manual Instruction Building
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { createContract } from '@wuwei-labs/srsly';
|
|
114
|
+
|
|
115
|
+
// Build instruction only (no RPC calls)
|
|
116
|
+
const instruction = await createContract({
|
|
117
|
+
owner: walletPublicKey,
|
|
118
|
+
fleet: fleetAddress,
|
|
119
|
+
ownerProfile: profileAddress,
|
|
120
|
+
rate: 1000000,
|
|
121
|
+
durationMin: 86400,
|
|
122
|
+
durationMax: 604800,
|
|
123
|
+
paymentsFreq: 'daily'
|
|
59
124
|
});
|
|
125
|
+
|
|
126
|
+
// Handle transaction building and submission yourself
|
|
127
|
+
// ... use instruction with your preferred transaction building method
|
|
60
128
|
```
|
|
61
129
|
|
|
62
130
|
## Core Features
|
|
63
131
|
|
|
64
|
-
###
|
|
132
|
+
### Flexible Address Input
|
|
65
133
|
|
|
66
|
-
|
|
134
|
+
The SDK accepts both string and Address types for all address parameters, automatically converting them to the proper format:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
import { createContract, address } from '@wuwei-labs/srsly';
|
|
138
|
+
|
|
139
|
+
// Mixed usage allowed
|
|
140
|
+
const createIx = await createContract({
|
|
141
|
+
owner: wallet,
|
|
142
|
+
fleet: "123abc...", // string
|
|
143
|
+
ownerProfile: address("456def..."), // Address<string>
|
|
144
|
+
rate: 5000000,
|
|
145
|
+
durationMin: 86400,
|
|
146
|
+
durationMax: 2592000,
|
|
147
|
+
paymentsFreq: 'daily'
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Contract Management
|
|
67
152
|
|
|
68
153
|
```typescript
|
|
69
154
|
import { createContract, closeContract } from '@wuwei-labs/srsly';
|
|
70
155
|
|
|
71
|
-
// Create
|
|
156
|
+
// Create rental contract instruction
|
|
72
157
|
const createIx = await createContract({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
158
|
+
owner: wallet,
|
|
159
|
+
fleet: fleetAddress,
|
|
160
|
+
ownerProfile: profileAddress,
|
|
161
|
+
rate: 5000000,
|
|
162
|
+
durationMin: 86400,
|
|
163
|
+
durationMax: 2592000,
|
|
164
|
+
paymentsFreq: 'daily'
|
|
78
165
|
});
|
|
79
166
|
|
|
80
|
-
// Close
|
|
167
|
+
// Close contract instruction
|
|
81
168
|
const closeIx = await closeContract({
|
|
82
|
-
|
|
169
|
+
owner: wallet,
|
|
170
|
+
fleet: fleetAddress,
|
|
171
|
+
contract: contractAddress
|
|
83
172
|
});
|
|
84
173
|
```
|
|
85
174
|
|
|
86
175
|
### Rental Operations
|
|
87
176
|
|
|
88
|
-
Handle rental lifecycle operations:
|
|
89
|
-
|
|
90
177
|
```typescript
|
|
91
|
-
import {
|
|
92
|
-
acceptRental,
|
|
93
|
-
cancelRental,
|
|
94
|
-
closeRental,
|
|
95
|
-
payRental,
|
|
96
|
-
resetRental
|
|
97
|
-
} from '@wuwei-labs/srsly';
|
|
178
|
+
import { acceptRental, cancelRental, closeRental } from '@wuwei-labs/srsly';
|
|
98
179
|
|
|
99
|
-
// Accept
|
|
180
|
+
// Accept rental offer instruction
|
|
100
181
|
const acceptIx = await acceptRental({
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
182
|
+
borrower: borrowerWallet,
|
|
183
|
+
borrowerProfile: borrowerProfileAddress,
|
|
184
|
+
borrowerFaction: 'mud', // or 1, 2, 3
|
|
185
|
+
fleet: fleetAddress,
|
|
186
|
+
contract: contractAddress,
|
|
187
|
+
rate: 100, // ATLAS per day
|
|
188
|
+
duration: 86400 // 1 day in seconds
|
|
104
189
|
});
|
|
105
190
|
|
|
106
|
-
// Cancel
|
|
191
|
+
// Cancel active rental instruction
|
|
107
192
|
const cancelIx = await cancelRental({
|
|
108
|
-
|
|
193
|
+
borrower: borrowerWallet,
|
|
194
|
+
contract: contractAddress,
|
|
195
|
+
rentalState: rentalStateAddress
|
|
109
196
|
});
|
|
110
197
|
|
|
111
|
-
// Close
|
|
198
|
+
// Close completed rental instruction
|
|
112
199
|
const closeIx = await closeRental({
|
|
113
|
-
|
|
200
|
+
borrower: borrowerWallet,
|
|
201
|
+
contract: contractAddress,
|
|
202
|
+
rentalState: rentalStateAddress,
|
|
203
|
+
ownerTokenAccount: ownerTokenAccountAddress
|
|
114
204
|
});
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Network Configuration
|
|
208
|
+
|
|
209
|
+
The SDK supports multiple network configurations:
|
|
115
210
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
211
|
+
### Global Configuration
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
import { setConfig, getConfig, clearConfig } from '@wuwei-labs/srsly';
|
|
215
|
+
|
|
216
|
+
// Use mainnet programs (includes default RPC URL)
|
|
217
|
+
setConfig({ programs: 'mainnet' });
|
|
218
|
+
|
|
219
|
+
// Use atlasnet programs (default) - requires explicit RPC URL
|
|
220
|
+
setConfig({
|
|
221
|
+
programs: 'atlasnet',
|
|
222
|
+
rpcUrl: 'https://api.atlasnet.solana.com' // Required for atlasnet
|
|
119
223
|
});
|
|
120
|
-
```
|
|
121
224
|
|
|
122
|
-
|
|
225
|
+
// Use holosim test programs - requires explicit RPC URL
|
|
226
|
+
setConfig({
|
|
227
|
+
programs: 'holosim',
|
|
228
|
+
rpcUrl: 'https://api.atlasnet.solana.com' // Required for holosim
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
// Custom configuration
|
|
232
|
+
setConfig({
|
|
233
|
+
programs: 'mainnet',
|
|
234
|
+
srslyProgramAddress: 'custom-srsly-program...',
|
|
235
|
+
gameId: 'custom-game-id...',
|
|
236
|
+
atlasMint: 'custom-atlas-mint...'
|
|
237
|
+
// mainnet includes default RPC URL
|
|
238
|
+
});
|
|
123
239
|
|
|
124
|
-
|
|
240
|
+
// Check current config
|
|
241
|
+
console.log(getConfig());
|
|
242
|
+
|
|
243
|
+
// Reset to defaults
|
|
244
|
+
clearConfig();
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Per-Instruction Configuration
|
|
125
248
|
|
|
126
249
|
```typescript
|
|
127
|
-
|
|
250
|
+
// Override global config for specific instructions
|
|
251
|
+
const ix = await createContract(params).set({ programs: 'mainnet' });
|
|
252
|
+
|
|
253
|
+
// Chain multiple configurations
|
|
254
|
+
const ix2 = await acceptRental(params)
|
|
255
|
+
.set({ programs: 'holosim' })
|
|
256
|
+
.set({ gameId: 'custom-game-id...' });
|
|
257
|
+
```
|
|
128
258
|
|
|
129
|
-
|
|
130
|
-
const contractAccount = await connection.getAccountInfo(contractPublicKey);
|
|
131
|
-
const contractState = ContractState.fromAccountInfo(contractAccount)[0];
|
|
259
|
+
## Payment System
|
|
132
260
|
|
|
133
|
-
|
|
134
|
-
console.log('Duration range:', contractState.durationMin.toString(), '-', contractState.durationMax.toString());
|
|
261
|
+
SRSLY implements an escrow-based payment system:
|
|
135
262
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
263
|
+
1. **Escrow**: Borrower deposits full rental amount upfront
|
|
264
|
+
2. **Periodic Payments**: Automated payments based on frequency (daily/weekly/monthly)
|
|
265
|
+
3. **Fees**: 10% platform fee, optional 10% referral sharing
|
|
266
|
+
4. **Refunds**: Pro-rata refunds for early cancellation (24-hour minimum)
|
|
139
267
|
|
|
140
|
-
|
|
141
|
-
|
|
268
|
+
```typescript
|
|
269
|
+
// Payment calculation
|
|
270
|
+
const rate = 1000; // ATLAS per day
|
|
271
|
+
const duration = 86400; // 1 day in seconds
|
|
272
|
+
const totalAmount = rate * duration * ATLAS_TO_STARDUST; // in stardust
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## Available Networks
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
// Program address sets
|
|
279
|
+
const networks = {
|
|
280
|
+
mainnet: {
|
|
281
|
+
sageProgram: 'SAGE2HAwep459SNq61LHvjxPk4pLPEJLoMETef7f7EE',
|
|
282
|
+
gameId: 'GAMEzqJehF8yAnKiTARUuhZMvLvkZVAsCVri5vSfemLr',
|
|
283
|
+
atlasMint: 'ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx',
|
|
284
|
+
rpcUrl: 'https://api.mainnet-beta.solana.com' // Default RPC for mainnet
|
|
285
|
+
},
|
|
286
|
+
atlasnet: {
|
|
287
|
+
sageProgram: 'SAgeTraQfBMdvGVDJYoEvjnbq5szW7RJPi6obDTDQUF',
|
|
288
|
+
gameId: 'GAMEC7U7cqmFFaRow33j1LwuV8u4YhAS1mJ5Dqjnar2k',
|
|
289
|
+
atlasMint: 'ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx'
|
|
290
|
+
// No default RPC - must provide rpcUrl required permissions
|
|
291
|
+
},
|
|
292
|
+
holosim: {
|
|
293
|
+
sageProgram: 'SAgeTraQfBMdvGVDJYoEvjnbq5szW7RJPi6obDTDQUF',
|
|
294
|
+
gameId: 'GAMEC7U7cqmFFaRow33j1LwuV8u4YhAS1mJ5Dqjnar2k',
|
|
295
|
+
atlasMint: 'ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx'
|
|
296
|
+
// No default RPC - must provide rpcUrl required permissions
|
|
297
|
+
}
|
|
298
|
+
};
|
|
142
299
|
```
|
|
143
300
|
|
|
144
|
-
|
|
301
|
+
**Note**: Atlasnet and holosim networks require you to explicitly provide an `rpcUrl` in your configuration since they don't have default RPC endpoints.
|
|
145
302
|
|
|
146
|
-
|
|
147
|
-
- **Network**: Solana Mainnet or Atlasnet
|
|
148
|
-
- **Built with**: Anchor Framework
|
|
303
|
+
## Types and Constants
|
|
149
304
|
|
|
150
|
-
|
|
305
|
+
```typescript
|
|
306
|
+
import type {
|
|
307
|
+
ContractState,
|
|
308
|
+
RentalState,
|
|
309
|
+
ConfigOptions,
|
|
310
|
+
PaymentFrequency
|
|
311
|
+
} from '@wuwei-labs/srsly';
|
|
312
|
+
|
|
313
|
+
import {
|
|
314
|
+
ATLAS_TO_STARDUST,
|
|
315
|
+
FACTION_MAPPING,
|
|
316
|
+
toAddress
|
|
317
|
+
} from '@wuwei-labs/srsly';
|
|
151
318
|
|
|
152
|
-
|
|
319
|
+
// Conversion rate: 1 ATLAS = 100,000,000 stardust
|
|
320
|
+
console.log(ATLAS_TO_STARDUST); // 100_000_000
|
|
153
321
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
322
|
+
// Faction mappings
|
|
323
|
+
console.log(FACTION_MAPPING[1]); // 'mud'
|
|
324
|
+
console.log(FACTION_MAPPING[2]); // 'oni'
|
|
325
|
+
console.log(FACTION_MAPPING[3]); // 'ustur'
|
|
157
326
|
|
|
158
|
-
|
|
327
|
+
// Address conversion utility
|
|
328
|
+
const addressObj = toAddress("123abc..."); // converts string to Address<string>
|
|
329
|
+
console.log(addressObj); // Address<string>
|
|
330
|
+
```
|
|
159
331
|
|
|
160
|
-
|
|
332
|
+
## IDL and Program Information
|
|
333
|
+
|
|
334
|
+
```typescript
|
|
335
|
+
// Access program IDLs
|
|
336
|
+
import mainnetIdl from '@wuwei-labs/srsly/idl/mainnet';
|
|
337
|
+
import atlasnetIdl from '@wuwei-labs/srsly/idl/atlasnet';
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Error Handling
|
|
161
341
|
|
|
162
342
|
```typescript
|
|
163
343
|
import { SrslyError } from '@wuwei-labs/srsly';
|
|
164
344
|
|
|
165
345
|
try {
|
|
166
|
-
const instruction = await createContract(
|
|
346
|
+
const instruction = await createContract(params);
|
|
347
|
+
// Add to transaction and send...
|
|
167
348
|
} catch (error) {
|
|
168
349
|
if (error instanceof SrslyError) {
|
|
169
|
-
console.error('SRSLY Error:', error.message);
|
|
170
|
-
|
|
350
|
+
console.error('SRSLY SDK Error:', error.message, error.code);
|
|
351
|
+
} else {
|
|
352
|
+
console.error('Other Error:', error);
|
|
171
353
|
}
|
|
172
354
|
}
|
|
173
355
|
```
|
|
174
356
|
|
|
175
|
-
##
|
|
357
|
+
## Package Structure
|
|
176
358
|
|
|
177
|
-
The SDK
|
|
359
|
+
The SDK provides optimized builds for different environments:
|
|
178
360
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
PaymentFrequency,
|
|
184
|
-
ClockData,
|
|
185
|
-
ThreadResponse
|
|
186
|
-
} from '@wuwei-labs/srsly';
|
|
187
|
-
```
|
|
361
|
+
- **CommonJS**: `./dist/cjs/` (Node.js, webpack)
|
|
362
|
+
- **ESM**: `./dist/esm/` (Modern ES modules)
|
|
363
|
+
- **Types**: `./dist/types/` (TypeScript definitions)
|
|
364
|
+
- **Shared**: `./dist/shared/codama/` (Optimized codama exports)
|
|
188
365
|
|
|
189
|
-
##
|
|
366
|
+
## Links
|
|
190
367
|
|
|
368
|
+
- **NPM Package**: [@wuwei-labs/srsly](https://www.npmjs.com/package/@wuwei-labs/srsly)
|
|
191
369
|
- **TypeDoc Documentation**: [API Reference](https://wuwei-labs.github.io/srsly/)
|
|
192
|
-
|
|
193
|
-
## Related Projects
|
|
194
|
-
|
|
195
|
-
- **Star Atlas**: The metaverse gaming ecosystem
|
|
196
|
-
- **Solana**: The blockchain platform powering SRSLY
|
|
197
|
-
- **Anchor**: The framework used to build the SRSLY program
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* This code was AUTOGENERATED using the codama library.
|
|
4
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
5
|
+
* to add features, then rerun codama to update it.
|
|
6
|
+
*
|
|
7
|
+
* @see https://github.com/codama-idl/codama
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.CONFIG_DISCRIMINATOR = void 0;
|
|
11
|
+
exports.getConfigDiscriminatorBytes = getConfigDiscriminatorBytes;
|
|
12
|
+
exports.getConfigEncoder = getConfigEncoder;
|
|
13
|
+
exports.getConfigDecoder = getConfigDecoder;
|
|
14
|
+
exports.getConfigCodec = getConfigCodec;
|
|
15
|
+
exports.decodeConfig = decodeConfig;
|
|
16
|
+
exports.fetchConfig = fetchConfig;
|
|
17
|
+
exports.fetchMaybeConfig = fetchMaybeConfig;
|
|
18
|
+
exports.fetchAllConfig = fetchAllConfig;
|
|
19
|
+
exports.fetchAllMaybeConfig = fetchAllMaybeConfig;
|
|
20
|
+
const kit_1 = require("@solana/kit");
|
|
21
|
+
const types_1 = require("../types");
|
|
22
|
+
exports.CONFIG_DISCRIMINATOR = new Uint8Array([
|
|
23
|
+
155, 12, 170, 224, 30, 250, 204, 130,
|
|
24
|
+
]);
|
|
25
|
+
function getConfigDiscriminatorBytes() {
|
|
26
|
+
return (0, kit_1.fixEncoderSize)((0, kit_1.getBytesEncoder)(), 8).encode(exports.CONFIG_DISCRIMINATOR);
|
|
27
|
+
}
|
|
28
|
+
function getConfigEncoder() {
|
|
29
|
+
return (0, kit_1.transformEncoder)((0, kit_1.getStructEncoder)([
|
|
30
|
+
['discriminator', (0, kit_1.fixEncoderSize)((0, kit_1.getBytesEncoder)(), 8)],
|
|
31
|
+
['version', (0, kit_1.getU8Encoder)()],
|
|
32
|
+
['bump', (0, kit_1.getU8Encoder)()],
|
|
33
|
+
['authority', (0, kit_1.getAddressEncoder)()],
|
|
34
|
+
['stardustToAtlas', (0, kit_1.getU64Encoder)()],
|
|
35
|
+
['serviceFeeBps', (0, kit_1.getU64Encoder)()],
|
|
36
|
+
['referralFeeBps', (0, kit_1.getU64Encoder)()],
|
|
37
|
+
['baseBps', (0, kit_1.getU64Encoder)()],
|
|
38
|
+
['rentalDurationMinSeconds', (0, kit_1.getU64Encoder)()],
|
|
39
|
+
['rentalDurationMaxSeconds', (0, kit_1.getU64Encoder)()],
|
|
40
|
+
['feesAccount', (0, kit_1.getAddressEncoder)()],
|
|
41
|
+
['atlasMint', (0, kit_1.getAddressEncoder)()],
|
|
42
|
+
['defaultPaymentFrequency', (0, types_1.getPaymentFrequencyEncoder)()],
|
|
43
|
+
['allowedFrequencies', (0, kit_1.getArrayEncoder)((0, types_1.getPaymentFrequencyEncoder)())],
|
|
44
|
+
]), (value) => ({ ...value, discriminator: exports.CONFIG_DISCRIMINATOR }));
|
|
45
|
+
}
|
|
46
|
+
function getConfigDecoder() {
|
|
47
|
+
return (0, kit_1.getStructDecoder)([
|
|
48
|
+
['discriminator', (0, kit_1.fixDecoderSize)((0, kit_1.getBytesDecoder)(), 8)],
|
|
49
|
+
['version', (0, kit_1.getU8Decoder)()],
|
|
50
|
+
['bump', (0, kit_1.getU8Decoder)()],
|
|
51
|
+
['authority', (0, kit_1.getAddressDecoder)()],
|
|
52
|
+
['stardustToAtlas', (0, kit_1.getU64Decoder)()],
|
|
53
|
+
['serviceFeeBps', (0, kit_1.getU64Decoder)()],
|
|
54
|
+
['referralFeeBps', (0, kit_1.getU64Decoder)()],
|
|
55
|
+
['baseBps', (0, kit_1.getU64Decoder)()],
|
|
56
|
+
['rentalDurationMinSeconds', (0, kit_1.getU64Decoder)()],
|
|
57
|
+
['rentalDurationMaxSeconds', (0, kit_1.getU64Decoder)()],
|
|
58
|
+
['feesAccount', (0, kit_1.getAddressDecoder)()],
|
|
59
|
+
['atlasMint', (0, kit_1.getAddressDecoder)()],
|
|
60
|
+
['defaultPaymentFrequency', (0, types_1.getPaymentFrequencyDecoder)()],
|
|
61
|
+
['allowedFrequencies', (0, kit_1.getArrayDecoder)((0, types_1.getPaymentFrequencyDecoder)())],
|
|
62
|
+
]);
|
|
63
|
+
}
|
|
64
|
+
function getConfigCodec() {
|
|
65
|
+
return (0, kit_1.combineCodec)(getConfigEncoder(), getConfigDecoder());
|
|
66
|
+
}
|
|
67
|
+
function decodeConfig(encodedAccount) {
|
|
68
|
+
return (0, kit_1.decodeAccount)(encodedAccount, getConfigDecoder());
|
|
69
|
+
}
|
|
70
|
+
async function fetchConfig(rpc, address, config) {
|
|
71
|
+
const maybeAccount = await fetchMaybeConfig(rpc, address, config);
|
|
72
|
+
(0, kit_1.assertAccountExists)(maybeAccount);
|
|
73
|
+
return maybeAccount;
|
|
74
|
+
}
|
|
75
|
+
async function fetchMaybeConfig(rpc, address, config) {
|
|
76
|
+
const maybeAccount = await (0, kit_1.fetchEncodedAccount)(rpc, address, config);
|
|
77
|
+
return decodeConfig(maybeAccount);
|
|
78
|
+
}
|
|
79
|
+
async function fetchAllConfig(rpc, addresses, config) {
|
|
80
|
+
const maybeAccounts = await fetchAllMaybeConfig(rpc, addresses, config);
|
|
81
|
+
(0, kit_1.assertAccountsExist)(maybeAccounts);
|
|
82
|
+
return maybeAccounts;
|
|
83
|
+
}
|
|
84
|
+
async function fetchAllMaybeConfig(rpc, addresses, config) {
|
|
85
|
+
const maybeAccounts = await (0, kit_1.fetchEncodedAccounts)(rpc, addresses, config);
|
|
86
|
+
return maybeAccounts.map((maybeAccount) => decodeConfig(maybeAccount));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/codama/accounts/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,15 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @see https://github.com/codama-idl/codama
|
|
8
8
|
*/
|
|
9
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
11
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
12
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
13
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
14
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
15
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
10
|
exports.CONTRACT_STATE_DISCRIMINATOR = void 0;
|
|
20
11
|
exports.getContractStateDiscriminatorBytes = getContractStateDiscriminatorBytes;
|
|
@@ -26,9 +17,7 @@ exports.fetchContractState = fetchContractState;
|
|
|
26
17
|
exports.fetchMaybeContractState = fetchMaybeContractState;
|
|
27
18
|
exports.fetchAllContractState = fetchAllContractState;
|
|
28
19
|
exports.fetchAllMaybeContractState = fetchAllMaybeContractState;
|
|
29
|
-
exports.getContractStateSize = getContractStateSize;
|
|
30
20
|
const kit_1 = require("@solana/kit");
|
|
31
|
-
const types_1 = require("../types");
|
|
32
21
|
exports.CONTRACT_STATE_DISCRIMINATOR = new Uint8Array([
|
|
33
22
|
190, 138, 10, 223, 189, 116, 222, 115,
|
|
34
23
|
]);
|
|
@@ -43,7 +32,7 @@ function getContractStateEncoder() {
|
|
|
43
32
|
['rate', (0, kit_1.getU64Encoder)()],
|
|
44
33
|
['durationMin', (0, kit_1.getU64Encoder)()],
|
|
45
34
|
['durationMax', (0, kit_1.getU64Encoder)()],
|
|
46
|
-
['paymentsFeq', (0,
|
|
35
|
+
['paymentsFeq', (0, kit_1.addEncoderSizePrefix)((0, kit_1.getUtf8Encoder)(), (0, kit_1.getU32Encoder)())],
|
|
47
36
|
['fleet', (0, kit_1.getAddressEncoder)()],
|
|
48
37
|
['gameId', (0, kit_1.getAddressEncoder)()],
|
|
49
38
|
['currentRentalState', (0, kit_1.getAddressEncoder)()],
|
|
@@ -51,7 +40,7 @@ function getContractStateEncoder() {
|
|
|
51
40
|
['ownerTokenAccount', (0, kit_1.getAddressEncoder)()],
|
|
52
41
|
['ownerProfile', (0, kit_1.getAddressEncoder)()],
|
|
53
42
|
['bump', (0, kit_1.getU8Encoder)()],
|
|
54
|
-
]), (value) => (
|
|
43
|
+
]), (value) => ({ ...value, discriminator: exports.CONTRACT_STATE_DISCRIMINATOR }));
|
|
55
44
|
}
|
|
56
45
|
function getContractStateDecoder() {
|
|
57
46
|
return (0, kit_1.getStructDecoder)([
|
|
@@ -61,7 +50,7 @@ function getContractStateDecoder() {
|
|
|
61
50
|
['rate', (0, kit_1.getU64Decoder)()],
|
|
62
51
|
['durationMin', (0, kit_1.getU64Decoder)()],
|
|
63
52
|
['durationMax', (0, kit_1.getU64Decoder)()],
|
|
64
|
-
['paymentsFeq', (0,
|
|
53
|
+
['paymentsFeq', (0, kit_1.addDecoderSizePrefix)((0, kit_1.getUtf8Decoder)(), (0, kit_1.getU32Decoder)())],
|
|
65
54
|
['fleet', (0, kit_1.getAddressDecoder)()],
|
|
66
55
|
['gameId', (0, kit_1.getAddressDecoder)()],
|
|
67
56
|
['currentRentalState', (0, kit_1.getAddressDecoder)()],
|
|
@@ -77,33 +66,22 @@ function getContractStateCodec() {
|
|
|
77
66
|
function decodeContractState(encodedAccount) {
|
|
78
67
|
return (0, kit_1.decodeAccount)(encodedAccount, getContractStateDecoder());
|
|
79
68
|
}
|
|
80
|
-
function fetchContractState(rpc, address, config) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return maybeAccount;
|
|
85
|
-
});
|
|
69
|
+
async function fetchContractState(rpc, address, config) {
|
|
70
|
+
const maybeAccount = await fetchMaybeContractState(rpc, address, config);
|
|
71
|
+
(0, kit_1.assertAccountExists)(maybeAccount);
|
|
72
|
+
return maybeAccount;
|
|
86
73
|
}
|
|
87
|
-
function fetchMaybeContractState(rpc, address, config) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return decodeContractState(maybeAccount);
|
|
91
|
-
});
|
|
74
|
+
async function fetchMaybeContractState(rpc, address, config) {
|
|
75
|
+
const maybeAccount = await (0, kit_1.fetchEncodedAccount)(rpc, address, config);
|
|
76
|
+
return decodeContractState(maybeAccount);
|
|
92
77
|
}
|
|
93
|
-
function fetchAllContractState(rpc, addresses, config) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return maybeAccounts;
|
|
98
|
-
});
|
|
78
|
+
async function fetchAllContractState(rpc, addresses, config) {
|
|
79
|
+
const maybeAccounts = await fetchAllMaybeContractState(rpc, addresses, config);
|
|
80
|
+
(0, kit_1.assertAccountsExist)(maybeAccounts);
|
|
81
|
+
return maybeAccounts;
|
|
99
82
|
}
|
|
100
|
-
function fetchAllMaybeContractState(rpc, addresses, config) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return maybeAccounts.map((maybeAccount) => decodeContractState(maybeAccount));
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
function getContractStateSize() {
|
|
107
|
-
return 228;
|
|
83
|
+
async function fetchAllMaybeContractState(rpc, addresses, config) {
|
|
84
|
+
const maybeAccounts = await (0, kit_1.fetchEncodedAccounts)(rpc, addresses, config);
|
|
85
|
+
return maybeAccounts.map((maybeAccount) => decodeContractState(maybeAccount));
|
|
108
86
|
}
|
|
109
87
|
//# sourceMappingURL=contractState.js.map
|