@ar.io/sdk 3.2.0-alpha.3 → 3.3.0-alpha.1

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.
@@ -1,19 +1,5 @@
1
- /**
2
- * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { ARWEAVE_TX_REGEX } from '../constants.js';
1
+ import { ARIO_TESTNET_PROCESS_ID, ARWEAVE_TX_REGEX } from '../constants.js';
2
+ import { parseAoEpochData } from './ao.js';
17
3
  export const validateArweaveId = (id) => {
18
4
  return ARWEAVE_TX_REGEX.test(id);
19
5
  };
@@ -37,3 +23,50 @@ export const paginationParamsToTags = (params) => {
37
23
  ];
38
24
  return pruneTags(tags);
39
25
  };
26
+ /**
27
+ * Get the epoch with distribution data for the current epoch
28
+ * @param arweave - The Arweave instance
29
+ * @returns The epoch with distribution data
30
+ */
31
+ export const getEpochDataFromGql = async ({ arweave, epochIndex, processId = ARIO_TESTNET_PROCESS_ID, }) => {
32
+ // fetch from gql
33
+ const query = epochDistributionNoticeGqlQuery({ epochIndex, processId });
34
+ const response = await arweave.api.post('graphql', query);
35
+ // parse the nodes to get the id
36
+ if (response.data.data.transactions?.edges?.length === 0) {
37
+ return undefined;
38
+ }
39
+ const id = response.data.data.transactions.edges[0].node.id;
40
+ // fetch the transaction from arweave
41
+ const transaction = await arweave.api.get(id);
42
+ const data = transaction.data;
43
+ // assert it is the correct type
44
+ return parseAoEpochData(data);
45
+ };
46
+ export const epochDistributionNoticeGqlQuery = ({ epochIndex, processId = ARIO_TESTNET_PROCESS_ID, }) => {
47
+ // write the query
48
+ const gqlQuery = JSON.stringify({
49
+ query: `
50
+ query {
51
+ transactions(
52
+ tags: [
53
+ { name: "From-Process", values: ["${processId}"] }
54
+ { name: "Action", values: ["Epoch-Distribution-Notice"] }
55
+ { name: "Epoch-Index", values: ["${epochIndex}"] }
56
+ { name: "Data-Protocol", values: ["ao"] }
57
+ ],
58
+ owners: ["fcoN_xJeisVsPXA-trzVAuIiqO3ydLQxM-L4XbrQKzY"],
59
+ first: 1,
60
+ sort: HEIGHT_DESC
61
+ ) {
62
+ edges {
63
+ node {
64
+ id
65
+ }
66
+ }
67
+ }
68
+ }
69
+ `,
70
+ });
71
+ return gqlQuery;
72
+ };
@@ -14,4 +14,4 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  // AUTOMATICALLY GENERATED FILE - DO NOT TOUCH
17
- export const version = '3.2.0-alpha.3';
17
+ export const version = '3.3.0-alpha.1';
@@ -2,8 +2,8 @@ import { AOContract, AoClient, AoSigner } from '../../types/index.js';
2
2
  import { ILogger } from '../logger.js';
3
3
  export declare class AOProcess implements AOContract {
4
4
  private logger;
5
- private processId;
6
5
  private ao;
6
+ readonly processId: string;
7
7
  constructor({ processId, ao, logger, }: {
8
8
  processId: string;
9
9
  ao?: AoClient;
@@ -1,3 +1,19 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import Arweave from 'arweave';
1
17
  import { AoArNSNameDataWithName, AoArNSReservedNameData, AoBalanceWithAddress, AoEpochDistributionData, AoEpochObservationData, AoGatewayWithAddress, AoJoinNetworkParams, AoMessageResult, AoPrimaryName, AoPrimaryNameRequest, AoRedelegationFeeInfo, AoReturnedName, AoTokenSupplyData, AoUpdateGatewaySettingsParams, AoWeightedObserver, ContractSigner, PaginationParams, PaginationResult, ProcessConfiguration, TransactionId, WalletAddress, WithSigner, WriteOptions } from '../types/index.js';
2
18
  import { AoARIORead, AoARIOWrite, AoArNSNameData, AoArNSPurchaseParams, AoArNSReservedNameDataWithName, AoBuyRecordParams, AoDelegation, AoEpochData, AoEpochSettings, AoExtendLeaseParams, AoGateway, AoGatewayDelegateWithAddress, AoGatewayRegistrySettings, AoGatewayVault, AoGetCostDetailsParams, AoIncreaseUndernameLimitParams, AoPaginatedAddressParams, AoRegistrationFees, AoVaultData, AoWalletVault, CostDetailsResult, DemandFactorSettings, EpochInput } from '../types/io.js';
3
19
  import { mARIOToken } from '../types/token.js';
@@ -24,20 +40,25 @@ export declare class ARIO {
24
40
  export declare class ARIOReadable implements AoARIORead {
25
41
  protected process: AOProcess;
26
42
  protected epochSettings: AoEpochSettings | undefined;
27
- constructor(config?: ProcessConfiguration);
43
+ protected arweave: Arweave;
44
+ constructor({ arweave, ...config }: ProcessConfiguration & {
45
+ arweave?: Arweave;
46
+ });
28
47
  getInfo(): Promise<{
29
48
  Name: string;
30
49
  Ticker: string;
31
50
  Logo: string;
32
51
  Denomination: number;
33
52
  Handlers: string[];
34
- LastTickedEpochIndex: number;
53
+ LastCreatedEpochIndex: number;
54
+ LastDistributedEpochIndex: number;
35
55
  }>;
36
56
  getTokenSupply(): Promise<AoTokenSupplyData>;
37
57
  private computeEpochIndexForTimestamp;
58
+ private computeCurrentEpochIndex;
38
59
  private computeEpochIndex;
39
60
  getEpochSettings(): Promise<AoEpochSettings>;
40
- getEpoch(epoch?: EpochInput): Promise<AoEpochData>;
61
+ getEpoch(epoch?: EpochInput): Promise<AoEpochData | undefined>;
41
62
  getArNSRecord({ name, }: {
42
63
  name: string;
43
64
  }): Promise<AoArNSNameData | undefined>;
@@ -67,8 +88,8 @@ export declare class ARIOReadable implements AoARIORead {
67
88
  getCurrentEpoch(): Promise<AoEpochData>;
68
89
  getPrescribedObservers(epoch?: EpochInput): Promise<AoWeightedObserver[]>;
69
90
  getPrescribedNames(epoch?: EpochInput): Promise<string[]>;
70
- getObservations(epoch?: EpochInput): Promise<AoEpochObservationData>;
71
- getDistributions(epoch?: EpochInput): Promise<AoEpochDistributionData>;
91
+ getObservations(epoch?: EpochInput): Promise<AoEpochObservationData | undefined>;
92
+ getDistributions(epoch?: EpochInput): Promise<AoEpochDistributionData | undefined>;
72
93
  getTokenCost(params: {
73
94
  intent: 'Buy-Record';
74
95
  type: 'permabuy' | 'lease';
@@ -133,11 +154,13 @@ export declare class ARIOReadable implements AoARIORead {
133
154
  export declare class ARIOWriteable extends ARIOReadable implements AoARIOWrite {
134
155
  protected process: AOProcess;
135
156
  private signer;
136
- constructor({ signer, ...config }: WithSigner<{
157
+ constructor({ signer, arweave, ...config }: WithSigner<{
137
158
  process?: AOProcess;
138
159
  } | {
139
160
  processId?: string;
140
- }>);
161
+ }> & {
162
+ arweave?: Arweave;
163
+ });
141
164
  transfer({ target, qty, }: {
142
165
  target: string;
143
166
  qty: number | mARIOToken;
@@ -24,6 +24,6 @@ export declare const arioDevnetProcessId = "GaQrvEMKBpkjofgnBi_B3IgIDmY_XYelVLB6
24
24
  export declare const ARIO_TESTNET_PROCESS_ID = "agYcCFJtrMG6cqMuZfskIkFTGvUPddICmtQSBIoPdiA";
25
25
  export declare const ANT_REGISTRY_ID = "i_le_yKKPVstLTDSmkHRqf-wYphMnwB9OhleiTgMkWc";
26
26
  export declare const MARIO_PER_ARIO = 1000000;
27
- export declare const AOS_MODULE_ID = "cbn0KKrBZH7hdNkNokuXLtGryrWM--PjSTBqIzw9Kkk";
27
+ export declare const AOS_MODULE_ID = "tyojTpJ9fIva_7BjTA9ruGM4uk2vyTfhVUulnbVxR8I";
28
28
  export declare const ANT_LUA_ID = "16_FyX-V2QU0RPSh1GIaEETSaUjNb0oVjCFpVbAfQq4";
29
29
  export declare const DEFAULT_SCHEDULER_ID = "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA";
@@ -353,7 +353,8 @@ export interface AoARIORead {
353
353
  Logo: string;
354
354
  Denomination: number;
355
355
  Handlers: string[];
356
- LastTickedEpochIndex: number;
356
+ LastCreatedEpochIndex: number;
357
+ LastDistributedEpochIndex: number;
357
358
  }>;
358
359
  getTokenSupply(): Promise<AoTokenSupplyData>;
359
360
  getEpochSettings(): Promise<AoEpochSettings>;
@@ -388,8 +389,8 @@ export interface AoARIORead {
388
389
  getCurrentEpoch(): Promise<AoEpochData>;
389
390
  getPrescribedObservers(epoch?: EpochInput): Promise<AoWeightedObserver[]>;
390
391
  getPrescribedNames(epoch?: EpochInput): Promise<string[]>;
391
- getObservations(epoch?: EpochInput): Promise<AoEpochObservationData>;
392
- getDistributions(epoch?: EpochInput): Promise<AoEpochDistributionData>;
392
+ getObservations(epoch?: EpochInput): Promise<AoEpochObservationData | undefined>;
393
+ getDistributions(epoch?: EpochInput): Promise<AoEpochDistributionData | undefined>;
393
394
  getTokenCost({ intent, type, years, name, quantity, }: AoTokenCostParams): Promise<number>;
394
395
  getCostDetails({ intent, type, years, name, quantity, fundFrom, }: AoGetCostDetailsParams): Promise<CostDetailsResult>;
395
396
  getRegistrationFees(): Promise<AoRegistrationFees>;
@@ -1,7 +1,7 @@
1
1
  import Arweave from 'arweave';
2
2
  import { Logger } from '../common/index.js';
3
3
  import { AoANTRecord } from '../types/ant.js';
4
- import { AoClient, AoSigner, ContractSigner, WalletAddress } from '../types/index.js';
4
+ import { AoClient, AoEpochData, AoSigner, ContractSigner, WalletAddress } from '../types/index.js';
5
5
  export type SpawnANTState = {
6
6
  owner: WalletAddress;
7
7
  controllers: WalletAddress[];
@@ -15,16 +15,22 @@ export type SpawnANTState = {
15
15
  export type SpawnANTParams = {
16
16
  signer: AoSigner;
17
17
  module?: string;
18
- luaCodeTxId?: string;
19
18
  ao?: AoClient;
20
19
  scheduler?: string;
21
20
  state?: SpawnANTState;
22
21
  stateContractTxId?: string;
23
22
  antRegistryId?: string;
24
23
  logger?: Logger;
24
+ /**
25
+ * @deprecated Compiled modules are now being used instead of luaCodeTxId
26
+ */
27
+ luaCodeTxId?: string;
28
+ /**
29
+ * @deprecated no longer in use due to compiled modules being preferred
30
+ */
25
31
  arweave?: Arweave;
26
32
  };
27
- export declare function spawnANT({ signer, module, luaCodeTxId, ao, scheduler, state, stateContractTxId, antRegistryId, logger, arweave, }: SpawnANTParams): Promise<string>;
33
+ export declare function spawnANT({ signer, module, ao, scheduler, state, stateContractTxId, antRegistryId, logger, }: SpawnANTParams): Promise<string>;
28
34
  export declare function evolveANT({ signer, processId, luaCodeTxId, ao, logger, arweave, }: {
29
35
  signer: AoSigner;
30
36
  processId: string;
@@ -41,3 +47,7 @@ export declare function initANTStateForAddress({ owner, targetId, ttlSeconds, ke
41
47
  ttlSeconds?: number;
42
48
  owner: WalletAddress;
43
49
  }): SpawnANTState;
50
+ /**
51
+ * Uses zod schema to parse the epoch data
52
+ */
53
+ export declare function parseAoEpochData(value: unknown): AoEpochData;
@@ -1,5 +1,21 @@
1
+ /**
2
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import Arweave from 'arweave';
1
17
  import { BlockHeight } from '../types/common.js';
2
- import { PaginationParams } from '../types/io.js';
18
+ import { AoEpochData, PaginationParams } from '../types/io.js';
3
19
  export declare const validateArweaveId: (id: string) => boolean;
4
20
  export declare function isBlockHeight(height: string | number): height is BlockHeight;
5
21
  /**
@@ -18,3 +34,17 @@ export declare const paginationParamsToTags: <T>(params?: PaginationParams<T>) =
18
34
  name: string;
19
35
  value: string;
20
36
  }[];
37
+ /**
38
+ * Get the epoch with distribution data for the current epoch
39
+ * @param arweave - The Arweave instance
40
+ * @returns The epoch with distribution data
41
+ */
42
+ export declare const getEpochDataFromGql: ({ arweave, epochIndex, processId, }: {
43
+ arweave: Arweave;
44
+ epochIndex: number;
45
+ processId?: string;
46
+ }) => Promise<AoEpochData | undefined>;
47
+ export declare const epochDistributionNoticeGqlQuery: ({ epochIndex, processId, }: {
48
+ epochIndex: number;
49
+ processId?: string;
50
+ }) => string;
@@ -13,4 +13,4 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export declare const version = "3.2.0-alpha.2";
16
+ export declare const version = "3.2.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ar.io/sdk",
3
- "version": "3.2.0-alpha.3",
3
+ "version": "3.3.0-alpha.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/ar-io/ar-io-sdk.git"