@provablehq/aleo-hooks 0.1.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/dist/index.d.mts +60 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.js +257 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +218 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +34 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as _provablehq_sdk from '@provablehq/sdk';
|
|
2
|
+
import * as _provablehq_aleo_types_src_transaction from '@provablehq/aleo-types/src/transaction';
|
|
3
|
+
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { FunctionKeyProvider as FunctionKeyProvider$2, RecordProvider as RecordProvider$2, ProgramManager as ProgramManager$2 } from '@provablehq/sdk/testnet.js';
|
|
7
|
+
import { FunctionKeyProvider as FunctionKeyProvider$1, RecordProvider as RecordProvider$1, ProgramManager as ProgramManager$1 } from '@provablehq/sdk/mainnet.js';
|
|
8
|
+
|
|
9
|
+
declare enum Network {
|
|
10
|
+
TESTNET = "testnet",
|
|
11
|
+
MAINNET = "mainnet"
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type FunctionKeyProvider<N extends Network> = N extends Network.MAINNET ? FunctionKeyProvider$1 : FunctionKeyProvider$2;
|
|
15
|
+
type RecordProvider<N extends Network> = N extends Network.MAINNET ? RecordProvider$1 : RecordProvider$2;
|
|
16
|
+
type ProgramManager<N extends Network> = N extends Network.MAINNET ? ProgramManager$1 : ProgramManager$2;
|
|
17
|
+
declare function newProgramManager<N extends Network>(network: N, host?: string | undefined, functionKeyProvider?: FunctionKeyProvider<N> | undefined, recordProvider?: RecordProvider<N> | undefined): ProgramManager<N>;
|
|
18
|
+
|
|
19
|
+
declare const queryClient: QueryClient;
|
|
20
|
+
declare function AleoHooksProvider({ children }: {
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
}): React.FunctionComponentElement<_tanstack_react_query.QueryClientProviderProps>;
|
|
23
|
+
declare function useLatestHeight(refetchInterval?: number): {
|
|
24
|
+
latestHeight: number | undefined;
|
|
25
|
+
latestHeightIsLoading: boolean;
|
|
26
|
+
latestHeightIsError: boolean;
|
|
27
|
+
latestHeightError: Error | null;
|
|
28
|
+
refetchLatestHeight: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<number, Error>>;
|
|
29
|
+
};
|
|
30
|
+
declare function useTransactions(blockHeight: number): {
|
|
31
|
+
transactions: _provablehq_aleo_types_src_transaction.Transaction[] | undefined;
|
|
32
|
+
transactionsIsLoading: boolean;
|
|
33
|
+
transactionsIsError: boolean;
|
|
34
|
+
transactionsError: Error | null;
|
|
35
|
+
};
|
|
36
|
+
declare function useTransaction(transactionId: string): {
|
|
37
|
+
transaction: _provablehq_sdk.TransactionJSON | undefined;
|
|
38
|
+
transactionIsLoading: boolean;
|
|
39
|
+
transactionIsError: boolean;
|
|
40
|
+
transactionError: Error | null;
|
|
41
|
+
};
|
|
42
|
+
declare function useProgram(programName: string): {
|
|
43
|
+
program: string | undefined;
|
|
44
|
+
programIsLoading: boolean;
|
|
45
|
+
programIsError: boolean;
|
|
46
|
+
programError: Error | null;
|
|
47
|
+
};
|
|
48
|
+
declare function useProgramMappingValue(): {
|
|
49
|
+
watchProgramMappingValue: (programName: string, mappingName: string, key: string, refetchInterval?: number) => {
|
|
50
|
+
programMappingValue: string | null | undefined;
|
|
51
|
+
programMappingValueIsLoading: boolean;
|
|
52
|
+
programMappingValueIsError: boolean;
|
|
53
|
+
programMappingValueError: Error | null;
|
|
54
|
+
refetchProgramMappingValue: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<string | null, Error>>;
|
|
55
|
+
};
|
|
56
|
+
getProgramMappingValue: (programName: string, mappingName: string, key: string) => Promise<string | null>;
|
|
57
|
+
pollProgramMappingValueUpdate: (programName: string, mappingName: string, key: string, callback?: (value: string) => string, retries?: number, interval?: number) => Promise<string | null>;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { AleoHooksProvider, Network, type ProgramManager, newProgramManager, queryClient, useLatestHeight, useProgram, useProgramMappingValue, useTransaction, useTransactions };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as _provablehq_sdk from '@provablehq/sdk';
|
|
2
|
+
import * as _provablehq_aleo_types_src_transaction from '@provablehq/aleo-types/src/transaction';
|
|
3
|
+
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { FunctionKeyProvider as FunctionKeyProvider$2, RecordProvider as RecordProvider$2, ProgramManager as ProgramManager$2 } from '@provablehq/sdk/testnet.js';
|
|
7
|
+
import { FunctionKeyProvider as FunctionKeyProvider$1, RecordProvider as RecordProvider$1, ProgramManager as ProgramManager$1 } from '@provablehq/sdk/mainnet.js';
|
|
8
|
+
|
|
9
|
+
declare enum Network {
|
|
10
|
+
TESTNET = "testnet",
|
|
11
|
+
MAINNET = "mainnet"
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type FunctionKeyProvider<N extends Network> = N extends Network.MAINNET ? FunctionKeyProvider$1 : FunctionKeyProvider$2;
|
|
15
|
+
type RecordProvider<N extends Network> = N extends Network.MAINNET ? RecordProvider$1 : RecordProvider$2;
|
|
16
|
+
type ProgramManager<N extends Network> = N extends Network.MAINNET ? ProgramManager$1 : ProgramManager$2;
|
|
17
|
+
declare function newProgramManager<N extends Network>(network: N, host?: string | undefined, functionKeyProvider?: FunctionKeyProvider<N> | undefined, recordProvider?: RecordProvider<N> | undefined): ProgramManager<N>;
|
|
18
|
+
|
|
19
|
+
declare const queryClient: QueryClient;
|
|
20
|
+
declare function AleoHooksProvider({ children }: {
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
}): React.FunctionComponentElement<_tanstack_react_query.QueryClientProviderProps>;
|
|
23
|
+
declare function useLatestHeight(refetchInterval?: number): {
|
|
24
|
+
latestHeight: number | undefined;
|
|
25
|
+
latestHeightIsLoading: boolean;
|
|
26
|
+
latestHeightIsError: boolean;
|
|
27
|
+
latestHeightError: Error | null;
|
|
28
|
+
refetchLatestHeight: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<number, Error>>;
|
|
29
|
+
};
|
|
30
|
+
declare function useTransactions(blockHeight: number): {
|
|
31
|
+
transactions: _provablehq_aleo_types_src_transaction.Transaction[] | undefined;
|
|
32
|
+
transactionsIsLoading: boolean;
|
|
33
|
+
transactionsIsError: boolean;
|
|
34
|
+
transactionsError: Error | null;
|
|
35
|
+
};
|
|
36
|
+
declare function useTransaction(transactionId: string): {
|
|
37
|
+
transaction: _provablehq_sdk.TransactionJSON | undefined;
|
|
38
|
+
transactionIsLoading: boolean;
|
|
39
|
+
transactionIsError: boolean;
|
|
40
|
+
transactionError: Error | null;
|
|
41
|
+
};
|
|
42
|
+
declare function useProgram(programName: string): {
|
|
43
|
+
program: string | undefined;
|
|
44
|
+
programIsLoading: boolean;
|
|
45
|
+
programIsError: boolean;
|
|
46
|
+
programError: Error | null;
|
|
47
|
+
};
|
|
48
|
+
declare function useProgramMappingValue(): {
|
|
49
|
+
watchProgramMappingValue: (programName: string, mappingName: string, key: string, refetchInterval?: number) => {
|
|
50
|
+
programMappingValue: string | null | undefined;
|
|
51
|
+
programMappingValueIsLoading: boolean;
|
|
52
|
+
programMappingValueIsError: boolean;
|
|
53
|
+
programMappingValueError: Error | null;
|
|
54
|
+
refetchProgramMappingValue: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<string | null, Error>>;
|
|
55
|
+
};
|
|
56
|
+
getProgramMappingValue: (programName: string, mappingName: string, key: string) => Promise<string | null>;
|
|
57
|
+
pollProgramMappingValueUpdate: (programName: string, mappingName: string, key: string, callback?: (value: string) => string, retries?: number, interval?: number) => Promise<string | null>;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { AleoHooksProvider, Network, type ProgramManager, newProgramManager, queryClient, useLatestHeight, useProgram, useProgramMappingValue, useTransaction, useTransactions };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
AleoHooksProvider: () => AleoHooksProvider,
|
|
34
|
+
Network: () => Network,
|
|
35
|
+
newProgramManager: () => newProgramManager,
|
|
36
|
+
queryClient: () => queryClient,
|
|
37
|
+
useLatestHeight: () => useLatestHeight,
|
|
38
|
+
useProgram: () => useProgram,
|
|
39
|
+
useProgramMappingValue: () => useProgramMappingValue,
|
|
40
|
+
useTransaction: () => useTransaction,
|
|
41
|
+
useTransactions: () => useTransactions
|
|
42
|
+
});
|
|
43
|
+
module.exports = __toCommonJS(index_exports);
|
|
44
|
+
var import_react_query = require("@tanstack/react-query");
|
|
45
|
+
var React = __toESM(require("react"));
|
|
46
|
+
|
|
47
|
+
// src/createConfig.ts
|
|
48
|
+
var import_aleo_wallet_standard = require("@provablehq/aleo-wallet-standard");
|
|
49
|
+
|
|
50
|
+
// src/types/network.ts
|
|
51
|
+
var Network = /* @__PURE__ */ ((Network3) => {
|
|
52
|
+
Network3["TESTNET"] = "testnet";
|
|
53
|
+
Network3["MAINNET"] = "mainnet";
|
|
54
|
+
return Network3;
|
|
55
|
+
})(Network || {});
|
|
56
|
+
|
|
57
|
+
// src/types/programManager.ts
|
|
58
|
+
var import_testnet = require("@provablehq/sdk/testnet.js");
|
|
59
|
+
var import_mainnet = require("@provablehq/sdk/mainnet.js");
|
|
60
|
+
function newProgramManager(network, host, functionKeyProvider, recordProvider) {
|
|
61
|
+
let programManager;
|
|
62
|
+
switch (network) {
|
|
63
|
+
case "mainnet" /* MAINNET */:
|
|
64
|
+
programManager = new import_mainnet.ProgramManager(
|
|
65
|
+
host,
|
|
66
|
+
functionKeyProvider,
|
|
67
|
+
recordProvider
|
|
68
|
+
);
|
|
69
|
+
break;
|
|
70
|
+
case "testnet" /* TESTNET */:
|
|
71
|
+
programManager = new import_testnet.ProgramManager(
|
|
72
|
+
host,
|
|
73
|
+
functionKeyProvider,
|
|
74
|
+
recordProvider
|
|
75
|
+
);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
return programManager;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// src/createConfig.ts
|
|
82
|
+
var State = class {
|
|
83
|
+
emitter = new import_aleo_wallet_standard.EventEmitter();
|
|
84
|
+
programManager;
|
|
85
|
+
constructor(network) {
|
|
86
|
+
this.programManager = newProgramManager(network);
|
|
87
|
+
}
|
|
88
|
+
async pollProgramMappingValueUpdate(programName, mappingName, key, callback = (value) => value, retries = 10, interval = 1e3) {
|
|
89
|
+
while (retries > 0) {
|
|
90
|
+
try {
|
|
91
|
+
const value = await this.programManager.networkClient.getProgramMappingValue(
|
|
92
|
+
programName,
|
|
93
|
+
mappingName,
|
|
94
|
+
key
|
|
95
|
+
);
|
|
96
|
+
return callback(value);
|
|
97
|
+
} catch (error) {
|
|
98
|
+
if (retries === 0) {
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
console.error(error);
|
|
102
|
+
retries--;
|
|
103
|
+
console.log("Retrying...");
|
|
104
|
+
console.log(retries, "retries left");
|
|
105
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// src/actions/getLatestHeight.ts
|
|
112
|
+
function getLatestHeight(config) {
|
|
113
|
+
return config.state.programManager.networkClient.getLatestHeight();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// src/actions/getProgram.ts
|
|
117
|
+
async function getProgram(config, programName) {
|
|
118
|
+
return config.state.programManager.networkClient.getProgram(programName);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/actions/getProgramMappingValue.ts
|
|
122
|
+
async function getProgramMappingValue(config, programName, mappingName, key) {
|
|
123
|
+
return config.state.programManager.networkClient.getProgramMappingValue(programName, mappingName, key);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// src/actions/getTransaction.ts
|
|
127
|
+
async function getTransaction(config, transactionId) {
|
|
128
|
+
return config.state.programManager.networkClient.getTransaction(transactionId);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// src/actions/getTransactions.ts
|
|
132
|
+
async function getTransactions(config, blockHeight) {
|
|
133
|
+
return (await config.state.programManager.networkClient.getTransactions(blockHeight)).map((transaction) => ({
|
|
134
|
+
type: transaction.transaction.type,
|
|
135
|
+
id: transaction.transaction.id,
|
|
136
|
+
fee: transaction.transaction.fee,
|
|
137
|
+
owner: transaction.transaction.owner,
|
|
138
|
+
deployment: transaction.transaction.deployment,
|
|
139
|
+
execution: transaction.transaction.execution
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// src/actions/pollProgramMappingValueUpdate.ts
|
|
144
|
+
async function pollProgramMappingValueUpdate(config, programName, mappingName, key, callback = (value) => value, retries = 10, interval = 1e3) {
|
|
145
|
+
let res = await config.state.pollProgramMappingValueUpdate(programName, mappingName, key, callback, retries, interval);
|
|
146
|
+
return res ?? null;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// src/index.ts
|
|
150
|
+
var state = new State("testnet" /* TESTNET */);
|
|
151
|
+
var queryClient = new import_react_query.QueryClient();
|
|
152
|
+
function AleoHooksProvider({ children }) {
|
|
153
|
+
return React.createElement(import_react_query.QueryClientProvider, { client: queryClient }, children);
|
|
154
|
+
}
|
|
155
|
+
function useLatestHeight(refetchInterval = 1e4) {
|
|
156
|
+
let query;
|
|
157
|
+
if (refetchInterval > 0) {
|
|
158
|
+
query = (0, import_react_query.useQuery)({
|
|
159
|
+
queryKey: ["latestHeight"],
|
|
160
|
+
queryFn: () => getLatestHeight({ state }),
|
|
161
|
+
refetchInterval
|
|
162
|
+
});
|
|
163
|
+
} else {
|
|
164
|
+
query = (0, import_react_query.useQuery)({
|
|
165
|
+
queryKey: ["latestHeight"],
|
|
166
|
+
queryFn: () => getLatestHeight({ state })
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
latestHeight: query.data,
|
|
171
|
+
latestHeightIsLoading: query.isLoading,
|
|
172
|
+
latestHeightIsError: query.isError,
|
|
173
|
+
latestHeightError: query.error,
|
|
174
|
+
refetchLatestHeight: query.refetch
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function useTransactions(blockHeight) {
|
|
178
|
+
let query = (0, import_react_query.useQuery)({
|
|
179
|
+
queryKey: ["transactions", blockHeight],
|
|
180
|
+
queryFn: () => getTransactions({ state }, blockHeight),
|
|
181
|
+
staleTime: Infinity,
|
|
182
|
+
gcTime: Infinity
|
|
183
|
+
});
|
|
184
|
+
return {
|
|
185
|
+
transactions: query.data,
|
|
186
|
+
transactionsIsLoading: query.isLoading,
|
|
187
|
+
transactionsIsError: query.isError,
|
|
188
|
+
transactionsError: query.error
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function useTransaction(transactionId) {
|
|
192
|
+
let query = (0, import_react_query.useQuery)({
|
|
193
|
+
queryKey: ["transaction", transactionId],
|
|
194
|
+
queryFn: () => getTransaction({ state }, transactionId),
|
|
195
|
+
staleTime: Infinity,
|
|
196
|
+
gcTime: Infinity
|
|
197
|
+
});
|
|
198
|
+
return {
|
|
199
|
+
transaction: query.data,
|
|
200
|
+
transactionIsLoading: query.isLoading,
|
|
201
|
+
transactionIsError: query.isError,
|
|
202
|
+
transactionError: query.error
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function useProgram(programName) {
|
|
206
|
+
let query = (0, import_react_query.useQuery)({
|
|
207
|
+
queryKey: ["program", programName],
|
|
208
|
+
queryFn: () => getProgram({ state }, programName)
|
|
209
|
+
});
|
|
210
|
+
return {
|
|
211
|
+
program: query.data,
|
|
212
|
+
programIsLoading: query.isLoading,
|
|
213
|
+
programIsError: query.isError,
|
|
214
|
+
programError: query.error
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
function useProgramMappingValue() {
|
|
218
|
+
return {
|
|
219
|
+
watchProgramMappingValue: (programName, mappingName, key, refetchInterval = 1e4) => {
|
|
220
|
+
const query = (0, import_react_query.useQuery)({
|
|
221
|
+
queryKey: ["programMappingValue", programName, mappingName, key],
|
|
222
|
+
queryFn: () => getProgramMappingValue({ state }, programName, mappingName, key),
|
|
223
|
+
refetchInterval
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
programMappingValue: query.data,
|
|
227
|
+
programMappingValueIsLoading: query.isLoading,
|
|
228
|
+
programMappingValueIsError: query.isError,
|
|
229
|
+
programMappingValueError: query.error,
|
|
230
|
+
refetchProgramMappingValue: query.refetch
|
|
231
|
+
};
|
|
232
|
+
},
|
|
233
|
+
getProgramMappingValue: (programName, mappingName, key) => getProgramMappingValue({ state }, programName, mappingName, key),
|
|
234
|
+
pollProgramMappingValueUpdate: (programName, mappingName, key, callback = (value) => value, retries = 10, interval = 1e3) => pollProgramMappingValueUpdate(
|
|
235
|
+
{ state },
|
|
236
|
+
programName,
|
|
237
|
+
mappingName,
|
|
238
|
+
key,
|
|
239
|
+
callback,
|
|
240
|
+
retries,
|
|
241
|
+
interval
|
|
242
|
+
)
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
246
|
+
0 && (module.exports = {
|
|
247
|
+
AleoHooksProvider,
|
|
248
|
+
Network,
|
|
249
|
+
newProgramManager,
|
|
250
|
+
queryClient,
|
|
251
|
+
useLatestHeight,
|
|
252
|
+
useProgram,
|
|
253
|
+
useProgramMappingValue,
|
|
254
|
+
useTransaction,
|
|
255
|
+
useTransactions
|
|
256
|
+
});
|
|
257
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/createConfig.ts","../src/types/network.ts","../src/types/programManager.ts","../src/actions/getLatestHeight.ts","../src/actions/getProgram.ts","../src/actions/getProgramMappingValue.ts","../src/actions/getTransaction.ts","../src/actions/getTransactions.ts","../src/actions/pollProgramMappingValueUpdate.ts"],"sourcesContent":["import { useQuery, QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport * as React from 'react';\nimport { State } from './createConfig';\nimport { Network } from './types';\nimport {\n getLatestHeight,\n getProgram,\n getProgramMappingValue,\n getTransaction,\n getTransactions,\n pollProgramMappingValueUpdate,\n} from './actions';\nexport * from './types';\n\nconst state = new State(Network.TESTNET);\n\nexport const queryClient = new QueryClient();\n\nexport function AleoHooksProvider({ children }: { children: React.ReactNode }) {\n return React.createElement(QueryClientProvider, { client: queryClient }, children);\n}\n\nexport function useLatestHeight(refetchInterval: number = 10_000) {\n let query;\n if (refetchInterval > 0) {\n query = useQuery({\n queryKey: ['latestHeight'],\n queryFn: () => getLatestHeight({ state }),\n refetchInterval,\n });\n } else {\n query = useQuery({\n queryKey: ['latestHeight'],\n queryFn: () => getLatestHeight({ state }),\n });\n }\n\n return {\n latestHeight: query.data,\n latestHeightIsLoading: query.isLoading,\n latestHeightIsError: query.isError,\n latestHeightError: query.error,\n refetchLatestHeight: query.refetch,\n };\n}\n\nexport function useTransactions(blockHeight: number) {\n let query = useQuery({\n queryKey: ['transactions', blockHeight],\n queryFn: () => getTransactions({ state }, blockHeight),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n\n return {\n transactions: query.data,\n transactionsIsLoading: query.isLoading,\n transactionsIsError: query.isError,\n transactionsError: query.error,\n };\n}\n\nexport function useTransaction(transactionId: string) {\n let query = useQuery({\n queryKey: ['transaction', transactionId],\n queryFn: () => getTransaction({ state }, transactionId),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n\n return {\n transaction: query.data,\n transactionIsLoading: query.isLoading,\n transactionIsError: query.isError,\n transactionError: query.error,\n };\n}\n\nexport function useProgram(programName: string) {\n let query = useQuery({\n queryKey: ['program', programName],\n queryFn: () => getProgram({ state }, programName),\n });\n\n return {\n program: query.data,\n programIsLoading: query.isLoading,\n programIsError: query.isError,\n programError: query.error,\n };\n}\n\nexport function useProgramMappingValue() {\n return {\n watchProgramMappingValue: (\n programName: string,\n mappingName: string,\n key: string,\n refetchInterval: number = 10_000,\n ) => {\n const query = useQuery({\n queryKey: ['programMappingValue', programName, mappingName, key],\n queryFn: () => getProgramMappingValue({ state }, programName, mappingName, key),\n refetchInterval,\n });\n return {\n programMappingValue: query.data,\n programMappingValueIsLoading: query.isLoading,\n programMappingValueIsError: query.isError,\n programMappingValueError: query.error,\n refetchProgramMappingValue: query.refetch,\n };\n },\n getProgramMappingValue: (programName: string, mappingName: string, key: string) =>\n getProgramMappingValue({ state }, programName, mappingName, key),\n pollProgramMappingValueUpdate: (\n programName: string,\n mappingName: string,\n key: string,\n callback: (value: string) => string = value => value,\n retries: number = 10,\n interval: number = 1000,\n ) =>\n pollProgramMappingValueUpdate(\n { state },\n programName,\n mappingName,\n key,\n callback,\n retries,\n interval,\n ),\n };\n}\n","import { EventEmitter } from '@provablehq/aleo-wallet-standard';\nimport { Network, newProgramManager, ProgramManager } from './types';\n\nexport type Config = {\n readonly state: State;\n};\n\nexport class State {\n emitter: EventEmitter = new EventEmitter();\n programManager: ProgramManager<Network.MAINNET | Network.TESTNET>;\n\n constructor(network: Network) {\n this.programManager = newProgramManager(network);\n }\n\n async pollProgramMappingValueUpdate(\n programName: string,\n mappingName: string,\n key: string,\n callback: (value: string) => string = value => value,\n retries: number = 10,\n interval: number = 1000,\n ): Promise<string | void> {\n while (retries > 0) {\n try {\n const value = await this.programManager.networkClient.getProgramMappingValue(\n programName,\n mappingName,\n key,\n );\n return callback(value);\n } catch (error) {\n if (retries === 0) {\n throw error;\n }\n console.error(error);\n retries--;\n console.log('Retrying...');\n console.log(retries, 'retries left');\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n }\n }\n}\n","export enum Network {\n TESTNET = 'testnet',\n MAINNET = 'mainnet',\n}\n","import {\n ProgramManager as TestnetProgramManager,\n // AleoNetworkClientOptions as TestnetClientOptions,\n FunctionKeyProvider as TestnetFunctionKeyProvider,\n RecordProvider as TestnetRecordProvider,\n} from '@provablehq/sdk/testnet.js';\n\nimport {\n ProgramManager as MainnetProgramManager,\n // AleoNetworkClientOptions as MainnetClientOptions,\n FunctionKeyProvider as MainnetFunctionKeyProvider,\n RecordProvider as MainnetRecordProvider,\n} from '@provablehq/sdk/mainnet.js';\n\nimport { Network } from './network';\n\n// export type AleoNetworkClientOptions<N extends Network> = N extends Network.MAINNET ? MainnetClientOptions : TestnetClientOptions\nexport type FunctionKeyProvider<N extends Network> = N extends Network.MAINNET\n ? MainnetFunctionKeyProvider\n : TestnetFunctionKeyProvider;\nexport type RecordProvider<N extends Network> = N extends Network.MAINNET\n ? MainnetRecordProvider\n : TestnetRecordProvider;\n\nexport type ProgramManager<N extends Network> = N extends Network.MAINNET\n ? MainnetProgramManager\n : TestnetProgramManager;\n\nexport function newProgramManager<N extends Network>(\n network: N,\n host?: string | undefined,\n functionKeyProvider?: FunctionKeyProvider<N> | undefined,\n recordProvider?: RecordProvider<N> | undefined,\n // networkClientOptions?: AleoNetworkClientOptions<N> | undefined,\n): ProgramManager<N> {\n let programManager;\n switch (network) {\n case Network.MAINNET:\n programManager = new MainnetProgramManager(\n host,\n functionKeyProvider,\n <MainnetRecordProvider | undefined>recordProvider,\n );\n break;\n case Network.TESTNET:\n programManager = new TestnetProgramManager(\n host,\n functionKeyProvider,\n <TestnetRecordProvider | undefined>recordProvider,\n );\n break;\n }\n return <ProgramManager<N>>programManager;\n}\n","import { Config } from \"../createConfig\";\n\nexport default function getLatestHeight(config: Config): Promise<number> {\n return config.state.programManager.networkClient.getLatestHeight()\n}","import { Network } from \"../types\"\nimport { Config } from \"../createConfig\"\n\nexport default async function getProgram(config: Config, programName: string) {\n return config.state.programManager.networkClient.getProgram(programName)\n}","import { Config } from \"../createConfig\";\nimport { Network } from \"../types\";\n\nexport default async function getProgramMappingValue(\n config: Config,\n programName: string,\n mappingName: string,\n key: string,\n): Promise<string | null> {\n return config.state.programManager.networkClient.getProgramMappingValue(programName, mappingName, key)\n}","import { Config } from \"../createConfig\";\n\nexport default async function getTransaction(config: Config, transactionId: string) {\n return config.state.programManager.networkClient.getTransaction(transactionId)\n}","import { Config } from \"../createConfig\";\nimport { Transaction } from \"@provablehq/aleo-types/src/transaction\";\n\nexport default async function getTransactions(config: Config, blockHeight: number): Promise<Transaction[]> {\n return (await config.state.programManager.networkClient.getTransactions(blockHeight)).map(transaction => (<Transaction>{\n type: transaction.transaction.type,\n id: transaction.transaction.id,\n fee: transaction.transaction.fee,\n owner: transaction.transaction.owner,\n deployment: transaction.transaction.deployment,\n execution: transaction.transaction.execution,\n }))\n}\n","import { Config } from \"../createConfig\";\nimport { Network } from \"../types\";\n\nexport default async function pollProgramMappingValueUpdate(\n config: Config,\n programName: string,\n mappingName: string,\n key: string,\n callback: (value: string) => string = (value) => value,\n retries: number = 10,\n interval: number = 1000,\n): Promise<string | null> {\n let res = await config.state.pollProgramMappingValueUpdate(programName, mappingName, key, callback, retries, interval)\n return res ?? null\n}"],"mappings":"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","names":["Network","MainnetProgramManager","TestnetProgramManager"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import { useQuery, QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
// src/createConfig.ts
|
|
6
|
+
import { EventEmitter } from "@provablehq/aleo-wallet-standard";
|
|
7
|
+
|
|
8
|
+
// src/types/network.ts
|
|
9
|
+
var Network = /* @__PURE__ */ ((Network3) => {
|
|
10
|
+
Network3["TESTNET"] = "testnet";
|
|
11
|
+
Network3["MAINNET"] = "mainnet";
|
|
12
|
+
return Network3;
|
|
13
|
+
})(Network || {});
|
|
14
|
+
|
|
15
|
+
// src/types/programManager.ts
|
|
16
|
+
import {
|
|
17
|
+
ProgramManager as TestnetProgramManager
|
|
18
|
+
} from "@provablehq/sdk/testnet.js";
|
|
19
|
+
import {
|
|
20
|
+
ProgramManager as MainnetProgramManager
|
|
21
|
+
} from "@provablehq/sdk/mainnet.js";
|
|
22
|
+
function newProgramManager(network, host, functionKeyProvider, recordProvider) {
|
|
23
|
+
let programManager;
|
|
24
|
+
switch (network) {
|
|
25
|
+
case "mainnet" /* MAINNET */:
|
|
26
|
+
programManager = new MainnetProgramManager(
|
|
27
|
+
host,
|
|
28
|
+
functionKeyProvider,
|
|
29
|
+
recordProvider
|
|
30
|
+
);
|
|
31
|
+
break;
|
|
32
|
+
case "testnet" /* TESTNET */:
|
|
33
|
+
programManager = new TestnetProgramManager(
|
|
34
|
+
host,
|
|
35
|
+
functionKeyProvider,
|
|
36
|
+
recordProvider
|
|
37
|
+
);
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
return programManager;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/createConfig.ts
|
|
44
|
+
var State = class {
|
|
45
|
+
emitter = new EventEmitter();
|
|
46
|
+
programManager;
|
|
47
|
+
constructor(network) {
|
|
48
|
+
this.programManager = newProgramManager(network);
|
|
49
|
+
}
|
|
50
|
+
async pollProgramMappingValueUpdate(programName, mappingName, key, callback = (value) => value, retries = 10, interval = 1e3) {
|
|
51
|
+
while (retries > 0) {
|
|
52
|
+
try {
|
|
53
|
+
const value = await this.programManager.networkClient.getProgramMappingValue(
|
|
54
|
+
programName,
|
|
55
|
+
mappingName,
|
|
56
|
+
key
|
|
57
|
+
);
|
|
58
|
+
return callback(value);
|
|
59
|
+
} catch (error) {
|
|
60
|
+
if (retries === 0) {
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
console.error(error);
|
|
64
|
+
retries--;
|
|
65
|
+
console.log("Retrying...");
|
|
66
|
+
console.log(retries, "retries left");
|
|
67
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// src/actions/getLatestHeight.ts
|
|
74
|
+
function getLatestHeight(config) {
|
|
75
|
+
return config.state.programManager.networkClient.getLatestHeight();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// src/actions/getProgram.ts
|
|
79
|
+
async function getProgram(config, programName) {
|
|
80
|
+
return config.state.programManager.networkClient.getProgram(programName);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// src/actions/getProgramMappingValue.ts
|
|
84
|
+
async function getProgramMappingValue(config, programName, mappingName, key) {
|
|
85
|
+
return config.state.programManager.networkClient.getProgramMappingValue(programName, mappingName, key);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// src/actions/getTransaction.ts
|
|
89
|
+
async function getTransaction(config, transactionId) {
|
|
90
|
+
return config.state.programManager.networkClient.getTransaction(transactionId);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// src/actions/getTransactions.ts
|
|
94
|
+
async function getTransactions(config, blockHeight) {
|
|
95
|
+
return (await config.state.programManager.networkClient.getTransactions(blockHeight)).map((transaction) => ({
|
|
96
|
+
type: transaction.transaction.type,
|
|
97
|
+
id: transaction.transaction.id,
|
|
98
|
+
fee: transaction.transaction.fee,
|
|
99
|
+
owner: transaction.transaction.owner,
|
|
100
|
+
deployment: transaction.transaction.deployment,
|
|
101
|
+
execution: transaction.transaction.execution
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// src/actions/pollProgramMappingValueUpdate.ts
|
|
106
|
+
async function pollProgramMappingValueUpdate(config, programName, mappingName, key, callback = (value) => value, retries = 10, interval = 1e3) {
|
|
107
|
+
let res = await config.state.pollProgramMappingValueUpdate(programName, mappingName, key, callback, retries, interval);
|
|
108
|
+
return res ?? null;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// src/index.ts
|
|
112
|
+
var state = new State("testnet" /* TESTNET */);
|
|
113
|
+
var queryClient = new QueryClient();
|
|
114
|
+
function AleoHooksProvider({ children }) {
|
|
115
|
+
return React.createElement(QueryClientProvider, { client: queryClient }, children);
|
|
116
|
+
}
|
|
117
|
+
function useLatestHeight(refetchInterval = 1e4) {
|
|
118
|
+
let query;
|
|
119
|
+
if (refetchInterval > 0) {
|
|
120
|
+
query = useQuery({
|
|
121
|
+
queryKey: ["latestHeight"],
|
|
122
|
+
queryFn: () => getLatestHeight({ state }),
|
|
123
|
+
refetchInterval
|
|
124
|
+
});
|
|
125
|
+
} else {
|
|
126
|
+
query = useQuery({
|
|
127
|
+
queryKey: ["latestHeight"],
|
|
128
|
+
queryFn: () => getLatestHeight({ state })
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
latestHeight: query.data,
|
|
133
|
+
latestHeightIsLoading: query.isLoading,
|
|
134
|
+
latestHeightIsError: query.isError,
|
|
135
|
+
latestHeightError: query.error,
|
|
136
|
+
refetchLatestHeight: query.refetch
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function useTransactions(blockHeight) {
|
|
140
|
+
let query = useQuery({
|
|
141
|
+
queryKey: ["transactions", blockHeight],
|
|
142
|
+
queryFn: () => getTransactions({ state }, blockHeight),
|
|
143
|
+
staleTime: Infinity,
|
|
144
|
+
gcTime: Infinity
|
|
145
|
+
});
|
|
146
|
+
return {
|
|
147
|
+
transactions: query.data,
|
|
148
|
+
transactionsIsLoading: query.isLoading,
|
|
149
|
+
transactionsIsError: query.isError,
|
|
150
|
+
transactionsError: query.error
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function useTransaction(transactionId) {
|
|
154
|
+
let query = useQuery({
|
|
155
|
+
queryKey: ["transaction", transactionId],
|
|
156
|
+
queryFn: () => getTransaction({ state }, transactionId),
|
|
157
|
+
staleTime: Infinity,
|
|
158
|
+
gcTime: Infinity
|
|
159
|
+
});
|
|
160
|
+
return {
|
|
161
|
+
transaction: query.data,
|
|
162
|
+
transactionIsLoading: query.isLoading,
|
|
163
|
+
transactionIsError: query.isError,
|
|
164
|
+
transactionError: query.error
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function useProgram(programName) {
|
|
168
|
+
let query = useQuery({
|
|
169
|
+
queryKey: ["program", programName],
|
|
170
|
+
queryFn: () => getProgram({ state }, programName)
|
|
171
|
+
});
|
|
172
|
+
return {
|
|
173
|
+
program: query.data,
|
|
174
|
+
programIsLoading: query.isLoading,
|
|
175
|
+
programIsError: query.isError,
|
|
176
|
+
programError: query.error
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function useProgramMappingValue() {
|
|
180
|
+
return {
|
|
181
|
+
watchProgramMappingValue: (programName, mappingName, key, refetchInterval = 1e4) => {
|
|
182
|
+
const query = useQuery({
|
|
183
|
+
queryKey: ["programMappingValue", programName, mappingName, key],
|
|
184
|
+
queryFn: () => getProgramMappingValue({ state }, programName, mappingName, key),
|
|
185
|
+
refetchInterval
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
programMappingValue: query.data,
|
|
189
|
+
programMappingValueIsLoading: query.isLoading,
|
|
190
|
+
programMappingValueIsError: query.isError,
|
|
191
|
+
programMappingValueError: query.error,
|
|
192
|
+
refetchProgramMappingValue: query.refetch
|
|
193
|
+
};
|
|
194
|
+
},
|
|
195
|
+
getProgramMappingValue: (programName, mappingName, key) => getProgramMappingValue({ state }, programName, mappingName, key),
|
|
196
|
+
pollProgramMappingValueUpdate: (programName, mappingName, key, callback = (value) => value, retries = 10, interval = 1e3) => pollProgramMappingValueUpdate(
|
|
197
|
+
{ state },
|
|
198
|
+
programName,
|
|
199
|
+
mappingName,
|
|
200
|
+
key,
|
|
201
|
+
callback,
|
|
202
|
+
retries,
|
|
203
|
+
interval
|
|
204
|
+
)
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
export {
|
|
208
|
+
AleoHooksProvider,
|
|
209
|
+
Network,
|
|
210
|
+
newProgramManager,
|
|
211
|
+
queryClient,
|
|
212
|
+
useLatestHeight,
|
|
213
|
+
useProgram,
|
|
214
|
+
useProgramMappingValue,
|
|
215
|
+
useTransaction,
|
|
216
|
+
useTransactions
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/createConfig.ts","../src/types/network.ts","../src/types/programManager.ts","../src/actions/getLatestHeight.ts","../src/actions/getProgram.ts","../src/actions/getProgramMappingValue.ts","../src/actions/getTransaction.ts","../src/actions/getTransactions.ts","../src/actions/pollProgramMappingValueUpdate.ts"],"sourcesContent":["import { useQuery, QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport * as React from 'react';\nimport { State } from './createConfig';\nimport { Network } from './types';\nimport {\n getLatestHeight,\n getProgram,\n getProgramMappingValue,\n getTransaction,\n getTransactions,\n pollProgramMappingValueUpdate,\n} from './actions';\nexport * from './types';\n\nconst state = new State(Network.TESTNET);\n\nexport const queryClient = new QueryClient();\n\nexport function AleoHooksProvider({ children }: { children: React.ReactNode }) {\n return React.createElement(QueryClientProvider, { client: queryClient }, children);\n}\n\nexport function useLatestHeight(refetchInterval: number = 10_000) {\n let query;\n if (refetchInterval > 0) {\n query = useQuery({\n queryKey: ['latestHeight'],\n queryFn: () => getLatestHeight({ state }),\n refetchInterval,\n });\n } else {\n query = useQuery({\n queryKey: ['latestHeight'],\n queryFn: () => getLatestHeight({ state }),\n });\n }\n\n return {\n latestHeight: query.data,\n latestHeightIsLoading: query.isLoading,\n latestHeightIsError: query.isError,\n latestHeightError: query.error,\n refetchLatestHeight: query.refetch,\n };\n}\n\nexport function useTransactions(blockHeight: number) {\n let query = useQuery({\n queryKey: ['transactions', blockHeight],\n queryFn: () => getTransactions({ state }, blockHeight),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n\n return {\n transactions: query.data,\n transactionsIsLoading: query.isLoading,\n transactionsIsError: query.isError,\n transactionsError: query.error,\n };\n}\n\nexport function useTransaction(transactionId: string) {\n let query = useQuery({\n queryKey: ['transaction', transactionId],\n queryFn: () => getTransaction({ state }, transactionId),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n\n return {\n transaction: query.data,\n transactionIsLoading: query.isLoading,\n transactionIsError: query.isError,\n transactionError: query.error,\n };\n}\n\nexport function useProgram(programName: string) {\n let query = useQuery({\n queryKey: ['program', programName],\n queryFn: () => getProgram({ state }, programName),\n });\n\n return {\n program: query.data,\n programIsLoading: query.isLoading,\n programIsError: query.isError,\n programError: query.error,\n };\n}\n\nexport function useProgramMappingValue() {\n return {\n watchProgramMappingValue: (\n programName: string,\n mappingName: string,\n key: string,\n refetchInterval: number = 10_000,\n ) => {\n const query = useQuery({\n queryKey: ['programMappingValue', programName, mappingName, key],\n queryFn: () => getProgramMappingValue({ state }, programName, mappingName, key),\n refetchInterval,\n });\n return {\n programMappingValue: query.data,\n programMappingValueIsLoading: query.isLoading,\n programMappingValueIsError: query.isError,\n programMappingValueError: query.error,\n refetchProgramMappingValue: query.refetch,\n };\n },\n getProgramMappingValue: (programName: string, mappingName: string, key: string) =>\n getProgramMappingValue({ state }, programName, mappingName, key),\n pollProgramMappingValueUpdate: (\n programName: string,\n mappingName: string,\n key: string,\n callback: (value: string) => string = value => value,\n retries: number = 10,\n interval: number = 1000,\n ) =>\n pollProgramMappingValueUpdate(\n { state },\n programName,\n mappingName,\n key,\n callback,\n retries,\n interval,\n ),\n };\n}\n","import { EventEmitter } from '@provablehq/aleo-wallet-standard';\nimport { Network, newProgramManager, ProgramManager } from './types';\n\nexport type Config = {\n readonly state: State;\n};\n\nexport class State {\n emitter: EventEmitter = new EventEmitter();\n programManager: ProgramManager<Network.MAINNET | Network.TESTNET>;\n\n constructor(network: Network) {\n this.programManager = newProgramManager(network);\n }\n\n async pollProgramMappingValueUpdate(\n programName: string,\n mappingName: string,\n key: string,\n callback: (value: string) => string = value => value,\n retries: number = 10,\n interval: number = 1000,\n ): Promise<string | void> {\n while (retries > 0) {\n try {\n const value = await this.programManager.networkClient.getProgramMappingValue(\n programName,\n mappingName,\n key,\n );\n return callback(value);\n } catch (error) {\n if (retries === 0) {\n throw error;\n }\n console.error(error);\n retries--;\n console.log('Retrying...');\n console.log(retries, 'retries left');\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n }\n }\n}\n","export enum Network {\n TESTNET = 'testnet',\n MAINNET = 'mainnet',\n}\n","import {\n ProgramManager as TestnetProgramManager,\n // AleoNetworkClientOptions as TestnetClientOptions,\n FunctionKeyProvider as TestnetFunctionKeyProvider,\n RecordProvider as TestnetRecordProvider,\n} from '@provablehq/sdk/testnet.js';\n\nimport {\n ProgramManager as MainnetProgramManager,\n // AleoNetworkClientOptions as MainnetClientOptions,\n FunctionKeyProvider as MainnetFunctionKeyProvider,\n RecordProvider as MainnetRecordProvider,\n} from '@provablehq/sdk/mainnet.js';\n\nimport { Network } from './network';\n\n// export type AleoNetworkClientOptions<N extends Network> = N extends Network.MAINNET ? MainnetClientOptions : TestnetClientOptions\nexport type FunctionKeyProvider<N extends Network> = N extends Network.MAINNET\n ? MainnetFunctionKeyProvider\n : TestnetFunctionKeyProvider;\nexport type RecordProvider<N extends Network> = N extends Network.MAINNET\n ? MainnetRecordProvider\n : TestnetRecordProvider;\n\nexport type ProgramManager<N extends Network> = N extends Network.MAINNET\n ? MainnetProgramManager\n : TestnetProgramManager;\n\nexport function newProgramManager<N extends Network>(\n network: N,\n host?: string | undefined,\n functionKeyProvider?: FunctionKeyProvider<N> | undefined,\n recordProvider?: RecordProvider<N> | undefined,\n // networkClientOptions?: AleoNetworkClientOptions<N> | undefined,\n): ProgramManager<N> {\n let programManager;\n switch (network) {\n case Network.MAINNET:\n programManager = new MainnetProgramManager(\n host,\n functionKeyProvider,\n <MainnetRecordProvider | undefined>recordProvider,\n );\n break;\n case Network.TESTNET:\n programManager = new TestnetProgramManager(\n host,\n functionKeyProvider,\n <TestnetRecordProvider | undefined>recordProvider,\n );\n break;\n }\n return <ProgramManager<N>>programManager;\n}\n","import { Config } from \"../createConfig\";\n\nexport default function getLatestHeight(config: Config): Promise<number> {\n return config.state.programManager.networkClient.getLatestHeight()\n}","import { Network } from \"../types\"\nimport { Config } from \"../createConfig\"\n\nexport default async function getProgram(config: Config, programName: string) {\n return config.state.programManager.networkClient.getProgram(programName)\n}","import { Config } from \"../createConfig\";\nimport { Network } from \"../types\";\n\nexport default async function getProgramMappingValue(\n config: Config,\n programName: string,\n mappingName: string,\n key: string,\n): Promise<string | null> {\n return config.state.programManager.networkClient.getProgramMappingValue(programName, mappingName, key)\n}","import { Config } from \"../createConfig\";\n\nexport default async function getTransaction(config: Config, transactionId: string) {\n return config.state.programManager.networkClient.getTransaction(transactionId)\n}","import { Config } from \"../createConfig\";\nimport { Transaction } from \"@provablehq/aleo-types/src/transaction\";\n\nexport default async function getTransactions(config: Config, blockHeight: number): Promise<Transaction[]> {\n return (await config.state.programManager.networkClient.getTransactions(blockHeight)).map(transaction => (<Transaction>{\n type: transaction.transaction.type,\n id: transaction.transaction.id,\n fee: transaction.transaction.fee,\n owner: transaction.transaction.owner,\n deployment: transaction.transaction.deployment,\n execution: transaction.transaction.execution,\n }))\n}\n","import { Config } from \"../createConfig\";\nimport { Network } from \"../types\";\n\nexport default async function pollProgramMappingValueUpdate(\n config: Config,\n programName: string,\n mappingName: string,\n key: string,\n callback: (value: string) => string = (value) => value,\n retries: number = 10,\n interval: number = 1000,\n): Promise<string | null> {\n let res = await config.state.pollProgramMappingValueUpdate(programName, mappingName, key, callback, retries, interval)\n return res ?? null\n}"],"mappings":"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","names":["Network"]}
|