@xyo-network/crypto-address-transaction-history-plugin 2.63.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +13 -0
  3. package/dist/cjs/Config.js +3 -0
  4. package/dist/cjs/Config.js.map +1 -0
  5. package/dist/cjs/Plugin.js +16 -0
  6. package/dist/cjs/Plugin.js.map +1 -0
  7. package/dist/cjs/Witness.js +39 -0
  8. package/dist/cjs/Witness.js.map +1 -0
  9. package/dist/cjs/index.js +12 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/dist/cjs/lib/getTransactionsForAddress.js +26 -0
  12. package/dist/cjs/lib/getTransactionsForAddress.js.map +1 -0
  13. package/dist/cjs/lib/index.js +5 -0
  14. package/dist/cjs/lib/index.js.map +1 -0
  15. package/dist/docs.json +15183 -0
  16. package/dist/esm/Config.js +2 -0
  17. package/dist/esm/Config.js.map +1 -0
  18. package/dist/esm/Plugin.js +11 -0
  19. package/dist/esm/Plugin.js.map +1 -0
  20. package/dist/esm/Witness.js +24 -0
  21. package/dist/esm/Witness.js.map +1 -0
  22. package/dist/esm/index.js +8 -0
  23. package/dist/esm/index.js.map +1 -0
  24. package/dist/esm/lib/getTransactionsForAddress.js +21 -0
  25. package/dist/esm/lib/getTransactionsForAddress.js.map +1 -0
  26. package/dist/esm/lib/index.js +2 -0
  27. package/dist/esm/lib/index.js.map +1 -0
  28. package/dist/types/Config.d.ts +7 -0
  29. package/dist/types/Config.d.ts.map +1 -0
  30. package/dist/types/Plugin.d.ts +3 -0
  31. package/dist/types/Plugin.d.ts.map +1 -0
  32. package/dist/types/Witness.d.ts +15 -0
  33. package/dist/types/Witness.d.ts.map +1 -0
  34. package/dist/types/index.d.ts +7 -0
  35. package/dist/types/index.d.ts.map +1 -0
  36. package/dist/types/lib/getTransactionsForAddress.d.ts +4 -0
  37. package/dist/types/lib/getTransactionsForAddress.d.ts.map +1 -0
  38. package/dist/types/lib/index.d.ts +2 -0
  39. package/dist/types/lib/index.d.ts.map +1 -0
  40. package/package.json +63 -0
  41. package/src/Config.ts +7 -0
  42. package/src/Plugin.ts +16 -0
  43. package/src/Witness.ts +46 -0
  44. package/src/index.ts +10 -0
  45. package/src/lib/getTransactionsForAddress.ts +30 -0
  46. package/src/lib/index.ts +1 -0
  47. package/typedoc.json +5 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { AddressTransactionHistorySchema } from '@xyo-network/crypto-address-transaction-history-payload-plugin';
2
+ import { PayloadSetSchema } from '@xyo-network/payload-model';
3
+ import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin';
4
+ import { AddressTransactionHistoryWitness } from './Witness';
5
+ export const AddressTransactionHistoryPlugin = () => createPayloadSetWitnessPlugin({ required: { [AddressTransactionHistorySchema]: 1 }, schema: PayloadSetSchema }, {
6
+ witness: async (params) => {
7
+ const result = await AddressTransactionHistoryWitness.create(params);
8
+ return result;
9
+ },
10
+ });
11
+ //# sourceMappingURL=Plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gEAAgE,CAAA;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAE9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAA;AAE5D,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,6BAA6B,CAC3B,EAAE,QAAQ,EAAE,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAChF;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpE,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { assertEx } from '@xylabs/assert';
2
+ import { AddressTransactionHistorySchema, AddressTransactionHistoryWitnessConfigSchema, } from '@xyo-network/crypto-address-transaction-history-payload-plugin';
3
+ import { AbstractWitness } from '@xyo-network/witness';
4
+ import { getTransactionsForAddress } from './lib';
5
+ const schema = AddressTransactionHistorySchema;
6
+ export class AddressTransactionHistoryWitness extends AbstractWitness {
7
+ static configSchema = AddressTransactionHistoryWitnessConfigSchema;
8
+ get provider() {
9
+ return assertEx(this.params.provider, 'Provider Required');
10
+ }
11
+ async observe() {
12
+ this.started('throw');
13
+ const address = assertEx(this.config.address, 'params.address is required');
14
+ const transactions = await getTransactionsForAddress(address, this.provider);
15
+ const payloads = transactions.map((transaction) => {
16
+ return { ...transaction, schema };
17
+ });
18
+ return super.observe(payloads);
19
+ }
20
+ async start() {
21
+ await super.start();
22
+ }
23
+ }
24
+ //# sourceMappingURL=Witness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAEL,+BAA+B,EAC/B,4CAA4C,GAC7C,MAAM,gEAAgE,CAAA;AAGvE,OAAO,EAAE,eAAe,EAAiB,MAAM,sBAAsB,CAAA;AAGrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAA;AASjD,MAAM,MAAM,GAAG,+BAA+B,CAAA;AAE9C,MAAM,OAAO,gCAEX,SAAQ,eAAwB;IAChC,MAAM,CAAU,YAAY,GAAG,4CAA4C,CAAA;IAE3E,IAAc,QAAQ;QACpB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAA;IAC5D,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAA;QAC3E,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAmC,CAAC,WAAW,EAAE,EAAE;YAClF,OAAO,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AddressTransactionHistoryPlugin } from './Plugin';
2
+ export * from './Config';
3
+ export * from './lib';
4
+ export * from './Witness';
5
+ export { AddressTransactionHistoryPlugin };
6
+ // eslint-disable-next-line import/no-default-export
7
+ export default AddressTransactionHistoryPlugin;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAE1D,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,+BAA+B,EAAE,CAAA;AAE1C,oDAAoD;AACpD,eAAe,+BAA+B,CAAA"}
@@ -0,0 +1,21 @@
1
+ export const getTransactionsForAddress = async (
2
+ /**
3
+ * The address of the wallet to search for NFTs
4
+ */
5
+ publicAddress,
6
+ /**
7
+ * The ethers provider to use to search
8
+ */
9
+ provider) => {
10
+ const history = await provider.getHistory(publicAddress);
11
+ return history.map((transaction) => {
12
+ const { gasLimit: rawGasLimit, gasPrice: rawGasPrice, maxFeePerGas: rawMaxFeePerGas, maxPriorityFeePerGas: rawMaxPriorityFeePerGas, value: rawValue, } = transaction;
13
+ const gasLimit = rawGasLimit?.toString();
14
+ const gasPrice = rawGasPrice?.toString();
15
+ const maxFeePerGas = rawMaxFeePerGas?.toString();
16
+ const maxPriorityFeePerGas = rawMaxPriorityFeePerGas?.toString();
17
+ const value = rawValue?.toString();
18
+ return { ...transaction, gasLimit, gasPrice, maxFeePerGas, maxPriorityFeePerGas, value };
19
+ });
20
+ };
21
+ //# sourceMappingURL=getTransactionsForAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionsForAddress.js","sourceRoot":"","sources":["../../../src/lib/getTransactionsForAddress.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK;AAC5C;;GAEG;AACH,aAAqB;AACrB;;GAEG;AACH,QAA2B,EACH,EAAE;IAC1B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IACxD,OAAO,OAAO,CAAC,GAAG,CAAc,CAAC,WAAW,EAAE,EAAE;QAC9C,MAAM,EACJ,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EACrB,YAAY,EAAE,eAAe,EAC7B,oBAAoB,EAAE,uBAAuB,EAC7C,KAAK,EAAE,QAAQ,GAChB,GAAG,WAAW,CAAA;QACf,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAA;QACxC,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAA;QACxC,MAAM,YAAY,GAAG,eAAe,EAAE,QAAQ,EAAE,CAAA;QAChD,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,QAAQ,EAAE,CAAA;QAChE,MAAM,KAAK,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAA;QAClC,OAAO,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAA;IAC1F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './getTransactionsForAddress';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { AddressTransactionHistoryWitnessConfigSchema } from '@xyo-network/crypto-address-transaction-history-payload-plugin';
2
+ import { WitnessConfig } from '@xyo-network/witness';
3
+ export type AddressTransactionHistoryWitnessConfig = WitnessConfig<{
4
+ address?: string;
5
+ schema: AddressTransactionHistoryWitnessConfigSchema;
6
+ }>;
7
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4CAA4C,EAAE,MAAM,gEAAgE,CAAA;AAC7H,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,MAAM,sCAAsC,GAAG,aAAa,CAAC;IACjE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,4CAA4C,CAAA;CACrD,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { AddressTransactionHistoryWitness } from './Witness';
2
+ export declare const AddressTransactionHistoryPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<AddressTransactionHistoryWitness<import("./Witness").AddressTransactionHistoryWitnessParams>>;
3
+ //# sourceMappingURL=Plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAA;AAE5D,eAAO,MAAM,+BAA+B,sKASzC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { EtherscanProvider } from '@ethersproject/providers';
2
+ import { AnyConfigSchema } from '@xyo-network/modules';
3
+ import { Payload } from '@xyo-network/payload-model';
4
+ import { AbstractWitness, WitnessParams } from '@xyo-network/witness';
5
+ import { AddressTransactionHistoryWitnessConfig } from './Config';
6
+ export type AddressTransactionHistoryWitnessParams = WitnessParams<AnyConfigSchema<AddressTransactionHistoryWitnessConfig>, {
7
+ provider?: EtherscanProvider;
8
+ }>;
9
+ export declare class AddressTransactionHistoryWitness<TParams extends AddressTransactionHistoryWitnessParams = AddressTransactionHistoryWitnessParams> extends AbstractWitness<TParams> {
10
+ static configSchema: "network.xyo.crypto.address.transaction.witness.config";
11
+ protected get provider(): EtherscanProvider;
12
+ observe(): Promise<Payload[]>;
13
+ start(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAOjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAErE,OAAO,EAAE,sCAAsC,EAAE,MAAM,UAAU,CAAA;AAGjE,MAAM,MAAM,sCAAsC,GAAG,aAAa,CAChE,eAAe,CAAC,sCAAsC,CAAC,EACvD;IACE,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B,CACF,CAAA;AAID,qBAAa,gCAAgC,CAC3C,OAAO,SAAS,sCAAsC,GAAG,sCAAsC,CAC/F,SAAQ,eAAe,CAAC,OAAO,CAAC;IAChC,OAAgB,YAAY,0DAA+C;IAE3E,SAAS,KAAK,QAAQ,sBAErB;IAEc,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAU7B,KAAK;CAGrB"}
@@ -0,0 +1,7 @@
1
+ import { AddressTransactionHistoryPlugin } from './Plugin';
2
+ export * from './Config';
3
+ export * from './lib';
4
+ export * from './Witness';
5
+ export { AddressTransactionHistoryPlugin };
6
+ export default AddressTransactionHistoryPlugin;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAE1D,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,+BAA+B,EAAE,CAAA;AAG1C,eAAe,+BAA+B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { EtherscanProvider } from '@ethersproject/providers';
2
+ import { Transaction } from '@xyo-network/crypto-address-transaction-history-payload-plugin';
3
+ export declare const getTransactionsForAddress: (publicAddress: string, provider: EtherscanProvider) => Promise<Transaction[]>;
4
+ //# sourceMappingURL=getTransactionsForAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionsForAddress.d.ts","sourceRoot":"","sources":["../../../src/lib/getTransactionsForAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gEAAgE,CAAA;AAE5F,eAAO,MAAM,yBAAyB,kBAIrB,MAAM,YAIX,iBAAiB,KAC1B,QAAQ,WAAW,EAAE,CAiBvB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './getTransactionsForAddress';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@xyo-network/crypto-address-transaction-history-plugin",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@ethersproject/providers": "^5.7.2",
14
+ "@xylabs/assert": "^2.9.1",
15
+ "@xyo-network/crypto-address-transaction-history-payload-plugin": "^2.63.2",
16
+ "@xyo-network/modules": "^2.63.2",
17
+ "@xyo-network/payload-model": "^2.63.2",
18
+ "@xyo-network/payloadset-plugin": "^2.63.2",
19
+ "@xyo-network/witness": "^2.63.2"
20
+ },
21
+ "devDependencies": {
22
+ "@xylabs/jest-helpers": "^2.9.1",
23
+ "@xylabs/ts-scripts-yarn3": "^2.17.17",
24
+ "@xylabs/tsconfig": "^2.17.17",
25
+ "ethers": "^5.7.2",
26
+ "jest": "^29.5.0",
27
+ "typescript": "^5.1.3"
28
+ },
29
+ "description": "Primary SDK for using XYO Protocol 2.0",
30
+ "browser": "dist/esm/index.js",
31
+ "docs": "dist/docs.json",
32
+ "exports": {
33
+ ".": {
34
+ "node": {
35
+ "import": "./dist/esm/index.js",
36
+ "require": "./dist/cjs/index.js"
37
+ },
38
+ "browser": {
39
+ "import": "./dist/esm/index.js",
40
+ "require": "./dist/cjs/index.js"
41
+ },
42
+ "default": "./dist/esm/index.js"
43
+ },
44
+ "./dist/docs.json": {
45
+ "default": "./dist/docs.json"
46
+ },
47
+ "./package.json": "./package.json"
48
+ },
49
+ "main": "dist/cjs/index.js",
50
+ "module": "dist/esm/index.js",
51
+ "homepage": "https://xyo.network",
52
+ "license": "LGPL-3.0",
53
+ "publishConfig": {
54
+ "access": "public"
55
+ },
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
59
+ },
60
+ "sideEffects": false,
61
+ "types": "dist/types/index.d.ts",
62
+ "version": "2.63.2"
63
+ }
package/src/Config.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { AddressTransactionHistoryWitnessConfigSchema } from '@xyo-network/crypto-address-transaction-history-payload-plugin'
2
+ import { WitnessConfig } from '@xyo-network/witness'
3
+
4
+ export type AddressTransactionHistoryWitnessConfig = WitnessConfig<{
5
+ address?: string
6
+ schema: AddressTransactionHistoryWitnessConfigSchema
7
+ }>
package/src/Plugin.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { AddressTransactionHistorySchema } from '@xyo-network/crypto-address-transaction-history-payload-plugin'
2
+ import { PayloadSetSchema } from '@xyo-network/payload-model'
3
+ import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
4
+
5
+ import { AddressTransactionHistoryWitness } from './Witness'
6
+
7
+ export const AddressTransactionHistoryPlugin = () =>
8
+ createPayloadSetWitnessPlugin<AddressTransactionHistoryWitness>(
9
+ { required: { [AddressTransactionHistorySchema]: 1 }, schema: PayloadSetSchema },
10
+ {
11
+ witness: async (params) => {
12
+ const result = await AddressTransactionHistoryWitness.create(params)
13
+ return result
14
+ },
15
+ },
16
+ )
package/src/Witness.ts ADDED
@@ -0,0 +1,46 @@
1
+ import type { EtherscanProvider } from '@ethersproject/providers'
2
+ import { assertEx } from '@xylabs/assert'
3
+ import {
4
+ AddressTransactionHistoryPayload,
5
+ AddressTransactionHistorySchema,
6
+ AddressTransactionHistoryWitnessConfigSchema,
7
+ } from '@xyo-network/crypto-address-transaction-history-payload-plugin'
8
+ import { AnyConfigSchema } from '@xyo-network/modules'
9
+ import { Payload } from '@xyo-network/payload-model'
10
+ import { AbstractWitness, WitnessParams } from '@xyo-network/witness'
11
+
12
+ import { AddressTransactionHistoryWitnessConfig } from './Config'
13
+ import { getTransactionsForAddress } from './lib'
14
+
15
+ export type AddressTransactionHistoryWitnessParams = WitnessParams<
16
+ AnyConfigSchema<AddressTransactionHistoryWitnessConfig>,
17
+ {
18
+ provider?: EtherscanProvider
19
+ }
20
+ >
21
+
22
+ const schema = AddressTransactionHistorySchema
23
+
24
+ export class AddressTransactionHistoryWitness<
25
+ TParams extends AddressTransactionHistoryWitnessParams = AddressTransactionHistoryWitnessParams,
26
+ > extends AbstractWitness<TParams> {
27
+ static override configSchema = AddressTransactionHistoryWitnessConfigSchema
28
+
29
+ protected get provider() {
30
+ return assertEx(this.params.provider, 'Provider Required')
31
+ }
32
+
33
+ override async observe(): Promise<Payload[]> {
34
+ this.started('throw')
35
+ const address = assertEx(this.config.address, 'params.address is required')
36
+ const transactions = await getTransactionsForAddress(address, this.provider)
37
+ const payloads = transactions.map<AddressTransactionHistoryPayload>((transaction) => {
38
+ return { ...transaction, schema }
39
+ })
40
+ return super.observe(payloads)
41
+ }
42
+
43
+ override async start() {
44
+ await super.start()
45
+ }
46
+ }
package/src/index.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { AddressTransactionHistoryPlugin } from './Plugin'
2
+
3
+ export * from './Config'
4
+ export * from './lib'
5
+ export * from './Witness'
6
+
7
+ export { AddressTransactionHistoryPlugin }
8
+
9
+ // eslint-disable-next-line import/no-default-export
10
+ export default AddressTransactionHistoryPlugin
@@ -0,0 +1,30 @@
1
+ import type { EtherscanProvider } from '@ethersproject/providers'
2
+ import { Transaction } from '@xyo-network/crypto-address-transaction-history-payload-plugin'
3
+
4
+ export const getTransactionsForAddress = async (
5
+ /**
6
+ * The address of the wallet to search for NFTs
7
+ */
8
+ publicAddress: string,
9
+ /**
10
+ * The ethers provider to use to search
11
+ */
12
+ provider: EtherscanProvider,
13
+ ): Promise<Transaction[]> => {
14
+ const history = await provider.getHistory(publicAddress)
15
+ return history.map<Transaction>((transaction) => {
16
+ const {
17
+ gasLimit: rawGasLimit,
18
+ gasPrice: rawGasPrice,
19
+ maxFeePerGas: rawMaxFeePerGas,
20
+ maxPriorityFeePerGas: rawMaxPriorityFeePerGas,
21
+ value: rawValue,
22
+ } = transaction
23
+ const gasLimit = rawGasLimit?.toString()
24
+ const gasPrice = rawGasPrice?.toString()
25
+ const maxFeePerGas = rawMaxFeePerGas?.toString()
26
+ const maxPriorityFeePerGas = rawMaxPriorityFeePerGas?.toString()
27
+ const value = rawValue?.toString()
28
+ return { ...transaction, gasLimit, gasPrice, maxFeePerGas, maxPriorityFeePerGas, value }
29
+ })
30
+ }
@@ -0,0 +1 @@
1
+ export * from './getTransactionsForAddress'
package/typedoc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["./src/index.ts"],
4
+ "tsconfig": "./tsconfig.typedoc.json"
5
+ }