@xyo-network/witness-blockchain-abstract 2.79.3 → 2.79.5
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/dist/browser/Witness.d.cts +6 -2
- package/dist/browser/Witness.d.cts.map +1 -1
- package/dist/browser/Witness.d.mts +6 -2
- package/dist/browser/Witness.d.mts.map +1 -1
- package/dist/browser/Witness.d.ts +6 -2
- package/dist/browser/Witness.d.ts.map +1 -1
- package/dist/browser/index.cjs +64 -74
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -0
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -0
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +64 -74
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/getProviderFromEnv.d.cts +6 -2
- package/dist/browser/lib/getProviderFromEnv.d.cts.map +1 -1
- package/dist/browser/lib/getProviderFromEnv.d.mts +6 -2
- package/dist/browser/lib/getProviderFromEnv.d.mts.map +1 -1
- package/dist/browser/lib/getProviderFromEnv.d.ts +6 -2
- package/dist/browser/lib/getProviderFromEnv.d.ts.map +1 -1
- package/dist/browser/lib/index.d.cts +0 -1
- package/dist/browser/lib/index.d.cts.map +1 -1
- package/dist/browser/lib/index.d.mts +0 -1
- package/dist/browser/lib/index.d.mts.map +1 -1
- package/dist/browser/lib/index.d.ts +0 -1
- package/dist/browser/lib/index.d.ts.map +1 -1
- package/dist/browser/model.d.cts +9 -0
- package/dist/browser/model.d.cts.map +1 -0
- package/dist/browser/model.d.mts +9 -0
- package/dist/browser/model.d.mts.map +1 -0
- package/dist/browser/model.d.ts +9 -0
- package/dist/browser/model.d.ts.map +1 -0
- package/dist/node/Witness.d.cts +6 -2
- package/dist/node/Witness.d.cts.map +1 -1
- package/dist/node/Witness.d.mts +6 -2
- package/dist/node/Witness.d.mts.map +1 -1
- package/dist/node/Witness.d.ts +6 -2
- package/dist/node/Witness.d.ts.map +1 -1
- package/dist/node/index.cjs +67 -81
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -0
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -0
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +64 -74
- package/dist/node/index.js.map +1 -1
- package/dist/node/lib/getProviderFromEnv.d.cts +6 -2
- package/dist/node/lib/getProviderFromEnv.d.cts.map +1 -1
- package/dist/node/lib/getProviderFromEnv.d.mts +6 -2
- package/dist/node/lib/getProviderFromEnv.d.mts.map +1 -1
- package/dist/node/lib/getProviderFromEnv.d.ts +6 -2
- package/dist/node/lib/getProviderFromEnv.d.ts.map +1 -1
- package/dist/node/lib/index.d.cts +0 -1
- package/dist/node/lib/index.d.cts.map +1 -1
- package/dist/node/lib/index.d.mts +0 -1
- package/dist/node/lib/index.d.mts.map +1 -1
- package/dist/node/lib/index.d.ts +0 -1
- package/dist/node/lib/index.d.ts.map +1 -1
- package/dist/node/model.d.cts +9 -0
- package/dist/node/model.d.cts.map +1 -0
- package/dist/node/model.d.mts +9 -0
- package/dist/node/model.d.mts.map +1 -0
- package/dist/node/model.d.ts +9 -0
- package/dist/node/model.d.ts.map +1 -0
- package/package.json +9 -7
- package/src/Witness.ts +20 -3
- package/src/index.ts +1 -0
- package/src/lib/getProviderFromEnv.ts +62 -25
- package/src/lib/index.ts +0 -1
- package/src/model.ts +13 -0
- package/dist/browser/lib/getErc1967Status.d.cts +0 -19
- package/dist/browser/lib/getErc1967Status.d.cts.map +0 -1
- package/dist/browser/lib/getErc1967Status.d.mts +0 -19
- package/dist/browser/lib/getErc1967Status.d.mts.map +0 -1
- package/dist/browser/lib/getErc1967Status.d.ts +0 -19
- package/dist/browser/lib/getErc1967Status.d.ts.map +0 -1
- package/dist/node/lib/getErc1967Status.d.cts +0 -19
- package/dist/node/lib/getErc1967Status.d.cts.map +0 -1
- package/dist/node/lib/getErc1967Status.d.mts +0 -19
- package/dist/node/lib/getErc1967Status.d.mts.map +0 -1
- package/dist/node/lib/getErc1967Status.d.ts +0 -19
- package/dist/node/lib/getErc1967Status.d.ts.map +0 -1
- package/src/lib/getErc1967Status.ts +0 -63
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
3
|
import { AbstractWitness } from '@xyo-network/abstract-witness';
|
|
3
4
|
import { AnyObject, WithAdditional } from '@xyo-network/object';
|
|
4
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
@@ -12,9 +13,12 @@ export type AdditionalBlockchainWitnessParams = {
|
|
|
12
13
|
providers: BaseProvider[];
|
|
13
14
|
};
|
|
14
15
|
export type BlockchainWitnessParams<TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig, TAdditionalParams extends AnyObject | void = void> = WitnessParams<TConfig, WithAdditional<{
|
|
15
|
-
providers: BaseProvider[]
|
|
16
|
+
providers: () => Promisable<BaseProvider[]>;
|
|
16
17
|
}, TAdditionalParams>>;
|
|
17
18
|
export declare abstract class AbstractBlockchainWitness<TParams extends BlockchainWitnessParams = BlockchainWitnessParams, TIn extends Payload = Payload, TOut extends Payload = Payload, TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut>> extends AbstractWitness<TParams, TIn, TOut, TEventData> {
|
|
18
|
-
|
|
19
|
+
private _providers;
|
|
20
|
+
getProvider(cache?: boolean): Promise<BaseProvider | undefined>;
|
|
21
|
+
getProvider(cache: boolean, error: string | true): Promise<BaseProvider>;
|
|
22
|
+
getProviders(cache?: boolean): Promise<BaseProvider[]>;
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=Witness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,YAAY,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;CAC5C,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAO,CAAC,UAAU,CAAwC;IAEpD,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAYxE,YAAY,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAK3D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
3
|
import { AbstractWitness } from '@xyo-network/abstract-witness';
|
|
3
4
|
import { AnyObject, WithAdditional } from '@xyo-network/object';
|
|
4
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
@@ -12,9 +13,12 @@ export type AdditionalBlockchainWitnessParams = {
|
|
|
12
13
|
providers: BaseProvider[];
|
|
13
14
|
};
|
|
14
15
|
export type BlockchainWitnessParams<TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig, TAdditionalParams extends AnyObject | void = void> = WitnessParams<TConfig, WithAdditional<{
|
|
15
|
-
providers: BaseProvider[]
|
|
16
|
+
providers: () => Promisable<BaseProvider[]>;
|
|
16
17
|
}, TAdditionalParams>>;
|
|
17
18
|
export declare abstract class AbstractBlockchainWitness<TParams extends BlockchainWitnessParams = BlockchainWitnessParams, TIn extends Payload = Payload, TOut extends Payload = Payload, TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut>> extends AbstractWitness<TParams, TIn, TOut, TEventData> {
|
|
18
|
-
|
|
19
|
+
private _providers;
|
|
20
|
+
getProvider(cache?: boolean): Promise<BaseProvider | undefined>;
|
|
21
|
+
getProvider(cache: boolean, error: string | true): Promise<BaseProvider>;
|
|
22
|
+
getProviders(cache?: boolean): Promise<BaseProvider[]>;
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=Witness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,YAAY,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;CAC5C,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAO,CAAC,UAAU,CAAwC;IAEpD,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAYxE,YAAY,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAK3D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
3
|
import { AbstractWitness } from '@xyo-network/abstract-witness';
|
|
3
4
|
import { AnyObject, WithAdditional } from '@xyo-network/object';
|
|
4
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
@@ -12,9 +13,12 @@ export type AdditionalBlockchainWitnessParams = {
|
|
|
12
13
|
providers: BaseProvider[];
|
|
13
14
|
};
|
|
14
15
|
export type BlockchainWitnessParams<TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig, TAdditionalParams extends AnyObject | void = void> = WitnessParams<TConfig, WithAdditional<{
|
|
15
|
-
providers: BaseProvider[]
|
|
16
|
+
providers: () => Promisable<BaseProvider[]>;
|
|
16
17
|
}, TAdditionalParams>>;
|
|
17
18
|
export declare abstract class AbstractBlockchainWitness<TParams extends BlockchainWitnessParams = BlockchainWitnessParams, TIn extends Payload = Payload, TOut extends Payload = Payload, TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut>> extends AbstractWitness<TParams, TIn, TOut, TEventData> {
|
|
18
|
-
|
|
19
|
+
private _providers;
|
|
20
|
+
getProvider(cache?: boolean): Promise<BaseProvider | undefined>;
|
|
21
|
+
getProvider(cache: boolean, error: string | true): Promise<BaseProvider>;
|
|
22
|
+
getProviders(cache?: boolean): Promise<BaseProvider[]>;
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=Witness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,YAAY,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElH,eAAO,MAAM,6BAA6B,mCAAmC,CAAA;AAC7E,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,aAAa,CAClJ,WAAW,GAAG;IAAE,MAAM,EAAE,OAAO,SAAS,IAAI,GAAG,CAAC,WAAW,SAAS,IAAI,GAAG,MAAM,GAAG,6BAA6B,CAAC,GAAG,OAAO,CAAA;CAAE,CAC/H,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,iBAAiB,SAAS,SAAS,GAAG,IAAI,GAAG,IAAI,IAC/C,aAAa,CACf,OAAO,EACP,cAAc,CACZ;IACE,SAAS,EAAE,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;CAC5C,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,yBAAyB,CAC7C,OAAO,SAAS,uBAAuB,GAAG,uBAAuB,EACjE,GAAG,SAAS,OAAO,GAAG,OAAO,EAC7B,IAAI,SAAS,OAAO,GAAG,OAAO,EAC9B,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,sBAAsB,CAChH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EACnC,GAAG,EACH,IAAI,CACL,CACD,SAAQ,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;IACvD,OAAO,CAAC,UAAU,CAAwC;IAEpD,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAYxE,YAAY,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAK3D"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -21,16 +21,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
23
|
AbstractBlockchainWitness: () => AbstractBlockchainWitness,
|
|
24
|
+
BlockchainAddressSchema: () => BlockchainAddressSchema,
|
|
24
25
|
BlockchainWitnessConfigSchema: () => BlockchainWitnessConfigSchema,
|
|
25
|
-
ERC1967_PROXY_ADMIN_STORAGE_SLOT: () => ERC1967_PROXY_ADMIN_STORAGE_SLOT,
|
|
26
|
-
ERC1967_PROXY_BEACON_STORAGE_SLOT: () => ERC1967_PROXY_BEACON_STORAGE_SLOT,
|
|
27
|
-
ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT: () => ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT,
|
|
28
|
-
ERC1967_PROXY_ROLLBACK_STORAGE_SLOT: () => ERC1967_PROXY_ROLLBACK_STORAGE_SLOT,
|
|
29
26
|
checkIpfsUrl: () => checkIpfsUrl,
|
|
30
|
-
getErc1967Status: () => getErc1967Status,
|
|
31
27
|
getProviderFromEnv: () => getProviderFromEnv,
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
getProvidersFromEnv: () => getProvidersFromEnv,
|
|
29
|
+
getSharedProviderFromEnv: () => getSharedProviderFromEnv
|
|
34
30
|
});
|
|
35
31
|
module.exports = __toCommonJS(src_exports);
|
|
36
32
|
|
|
@@ -59,84 +55,57 @@ var checkIpfsUrl = (urlToCheck, ipfsGateway) => {
|
|
|
59
55
|
}
|
|
60
56
|
};
|
|
61
57
|
|
|
62
|
-
// src/lib/getErc1967Status.ts
|
|
63
|
-
var import_bignumber = require("@xylabs/bignumber");
|
|
64
|
-
var import_open_zeppelin_typechain = require("@xyo-network/open-zeppelin-typechain");
|
|
65
|
-
var ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
66
|
-
var ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
67
|
-
var ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
68
|
-
var ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
69
|
-
var hexBytesOnlyOnly = (value) => {
|
|
70
|
-
return value.startsWith("0x") ? value.substring(2) : value;
|
|
71
|
-
};
|
|
72
|
-
var addressFromHex = (value) => {
|
|
73
|
-
return `0x${hexBytesOnlyOnly(value).substring(24)}`;
|
|
74
|
-
};
|
|
75
|
-
var isHexZero = (value) => {
|
|
76
|
-
return new import_bignumber.BigNumber(hexBytesOnlyOnly(value), "hex").eqn(0);
|
|
77
|
-
};
|
|
78
|
-
var readAddressFromSlot = async (provider, address, slot) => {
|
|
79
|
-
const slotValue = await provider.getStorageAt(address, slot);
|
|
80
|
-
return addressFromHex(slotValue);
|
|
81
|
-
};
|
|
82
|
-
var getErc1967Status = async (provider, address) => {
|
|
83
|
-
const proxy = {
|
|
84
|
-
admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT),
|
|
85
|
-
beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT),
|
|
86
|
-
implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT),
|
|
87
|
-
rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT)
|
|
88
|
-
};
|
|
89
|
-
if (!isHexZero(proxy.beacon)) {
|
|
90
|
-
const beacon = import_open_zeppelin_typechain.UpgradeableBeacon__factory.connect(proxy.beacon, provider);
|
|
91
|
-
try {
|
|
92
|
-
proxy.implementation = await beacon.callStatic.implementation();
|
|
93
|
-
} catch (ex) {
|
|
94
|
-
const error = ex;
|
|
95
|
-
console.log(error.message);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return {
|
|
99
|
-
address,
|
|
100
|
-
implementation: isHexZero(proxy.implementation) ? address : proxy.implementation,
|
|
101
|
-
proxy
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
|
|
105
58
|
// src/lib/getProviderFromEnv.ts
|
|
106
59
|
var import_providers = require("@ethersproject/providers");
|
|
107
60
|
var import_assert = require("@xylabs/assert");
|
|
108
|
-
var
|
|
109
|
-
|
|
61
|
+
var enableConfigOverride = false;
|
|
62
|
+
var configureConnection = (connection, { timeout = 1e3 } = {}) => {
|
|
63
|
+
if (connection && enableConfigOverride) {
|
|
64
|
+
connection.timeout = timeout;
|
|
65
|
+
connection.throttleCallback = async (attempt, url) => {
|
|
66
|
+
console.log(`throttleCallback[${attempt}]: ${url}`);
|
|
67
|
+
return await Promise.resolve(true);
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
var createInfuraRpc = (chainId, overrides) => {
|
|
72
|
+
const provider = process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET ? new import_providers.InfuraProvider(chainId, {
|
|
110
73
|
projectId: process.env.INFURA_PROJECT_ID,
|
|
111
74
|
projectSecret: process.env.INFURA_PROJECT_SECRET
|
|
112
|
-
});
|
|
75
|
+
}) : void 0;
|
|
76
|
+
configureConnection(provider?.connection, overrides);
|
|
77
|
+
return provider;
|
|
113
78
|
};
|
|
114
|
-
var createInfuraWss = (chainId) => {
|
|
115
|
-
|
|
79
|
+
var createInfuraWss = (chainId, overrides) => {
|
|
80
|
+
const provider = process.env.INFURA_PROJECT_ID ? new import_providers.InfuraWebSocketProvider(chainId, {
|
|
116
81
|
projectId: process.env.INFURA_PROJECT_ID
|
|
117
|
-
});
|
|
82
|
+
}) : void 0;
|
|
83
|
+
configureConnection(provider?.connection, overrides);
|
|
84
|
+
return provider;
|
|
118
85
|
};
|
|
119
|
-
var createQuicknodeWss = (chainId) => {
|
|
86
|
+
var createQuicknodeWss = (chainId, overrides) => {
|
|
120
87
|
const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI;
|
|
121
|
-
|
|
88
|
+
const provider = quickNodeWSSUri ? new import_providers.WebSocketProvider(quickNodeWSSUri, chainId) : void 0;
|
|
89
|
+
configureConnection(provider?.connection, overrides);
|
|
90
|
+
return provider;
|
|
122
91
|
};
|
|
123
|
-
var createQuicknodeRpc = (chainId) => {
|
|
92
|
+
var createQuicknodeRpc = (chainId, overrides) => {
|
|
124
93
|
const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI;
|
|
125
|
-
|
|
94
|
+
const provider = quickNodeHttpsUri ? new import_providers.JsonRpcProvider(quickNodeHttpsUri, chainId) : void 0;
|
|
95
|
+
configureConnection(provider?.connection, overrides);
|
|
96
|
+
return provider;
|
|
126
97
|
};
|
|
127
|
-
var getProviderFromEnv = (chainId = 1,
|
|
128
|
-
const { providerSource, providerType } = options ?? {};
|
|
98
|
+
var getProviderFromEnv = (chainId = 1, { providerSource = "infura", providerType = "rpc", overrides } = {}) => {
|
|
129
99
|
let provider = void 0;
|
|
130
100
|
switch (providerSource) {
|
|
131
101
|
case "quicknode": {
|
|
132
102
|
switch (providerType) {
|
|
133
103
|
case "rpc": {
|
|
134
|
-
provider = createQuicknodeRpc(chainId);
|
|
104
|
+
provider = createQuicknodeRpc(chainId, overrides);
|
|
135
105
|
break;
|
|
136
106
|
}
|
|
137
|
-
case "wss":
|
|
138
|
-
|
|
139
|
-
provider = createQuicknodeWss(chainId);
|
|
107
|
+
case "wss": {
|
|
108
|
+
provider = createQuicknodeWss(chainId, overrides);
|
|
140
109
|
break;
|
|
141
110
|
}
|
|
142
111
|
}
|
|
@@ -145,13 +114,12 @@ var getProviderFromEnv = (chainId = 1, options) => {
|
|
|
145
114
|
default:
|
|
146
115
|
case "infura": {
|
|
147
116
|
switch (providerType) {
|
|
148
|
-
case "
|
|
149
|
-
provider =
|
|
117
|
+
case "wss": {
|
|
118
|
+
provider = createInfuraWss(chainId, overrides);
|
|
150
119
|
break;
|
|
151
120
|
}
|
|
152
|
-
case "
|
|
153
|
-
|
|
154
|
-
provider = createInfuraWss(chainId);
|
|
121
|
+
case "rpc": {
|
|
122
|
+
provider = createInfuraRpc(chainId, overrides);
|
|
155
123
|
break;
|
|
156
124
|
}
|
|
157
125
|
}
|
|
@@ -161,7 +129,7 @@ var getProviderFromEnv = (chainId = 1, options) => {
|
|
|
161
129
|
if (!provider) {
|
|
162
130
|
provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId);
|
|
163
131
|
}
|
|
164
|
-
return (0, import_assert.assertEx)(provider, `Unable to create provider [${chainId}]: ${
|
|
132
|
+
return (0, import_assert.assertEx)(provider, `Unable to create provider [${chainId}]: ${providerSource}|${providerType}`);
|
|
165
133
|
};
|
|
166
134
|
var providers = {};
|
|
167
135
|
var getSharedProviderFromEnv = (chainId = 1, options) => {
|
|
@@ -169,14 +137,36 @@ var getSharedProviderFromEnv = (chainId = 1, options) => {
|
|
|
169
137
|
providers[key] = providers[key] ?? getProviderFromEnv(chainId, options);
|
|
170
138
|
return providers[key];
|
|
171
139
|
};
|
|
140
|
+
var getProvidersFromEnv = (count = 1, chainId = 1, options = {}) => {
|
|
141
|
+
const result = [];
|
|
142
|
+
for (let i = 0; i < count; i++) {
|
|
143
|
+
result.push(getProviderFromEnv(chainId, options));
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// src/model.ts
|
|
149
|
+
var BlockchainAddressSchema = "network.xyo.blockchain.address";
|
|
172
150
|
|
|
173
151
|
// src/Witness.ts
|
|
174
152
|
var import_abstract_witness = require("@xyo-network/abstract-witness");
|
|
175
153
|
var BlockchainWitnessConfigSchema = "network.xyo.blockchain.witness";
|
|
176
154
|
var AbstractBlockchainWitness = class extends import_abstract_witness.AbstractWitness {
|
|
177
|
-
|
|
178
|
-
|
|
155
|
+
_providers = void 0;
|
|
156
|
+
async getProvider(cache = false, error) {
|
|
157
|
+
const providers2 = await this.getProviders(cache);
|
|
158
|
+
if (providers2.length === 0) {
|
|
159
|
+
if (error) {
|
|
160
|
+
throw Error(typeof error === "string" ? error : "No providers available");
|
|
161
|
+
}
|
|
162
|
+
return void 0;
|
|
163
|
+
}
|
|
179
164
|
return providers2[Date.now() % providers2.length];
|
|
180
165
|
}
|
|
166
|
+
async getProviders(cache = false) {
|
|
167
|
+
const cachedProviders = cache ? this._providers : void 0;
|
|
168
|
+
this._providers = cachedProviders ?? await this.params.providers();
|
|
169
|
+
return this._providers;
|
|
170
|
+
}
|
|
181
171
|
};
|
|
182
172
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/lib/checkIpfsUrl.ts","../../src/lib/getErc1967Status.ts","../../src/lib/getProviderFromEnv.ts","../../src/Witness.ts"],"sourcesContent":["export * from './lib'\nexport * from './Witness'\n","/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway: string) => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = ipfsGateway\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch (ex) {\n const error = ex as Error\n console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n console.log(error.stack)\n return undefined\n }\n}\n","import { BaseProvider } from '@ethersproject/providers'\nimport { BigNumber } from '@xylabs/bignumber'\nimport { UpgradeableBeacon__factory } from '@xyo-network/open-zeppelin-typechain'\n\nexport const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc'\nexport const ERC1967_PROXY_BEACON_STORAGE_SLOT = '0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50'\nexport const ERC1967_PROXY_ADMIN_STORAGE_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103'\nexport const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = '0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143'\n\nexport interface Erc1967DataSlots {\n admin: string\n beacon: string\n implementation: string\n rollback: string\n}\n\nexport interface Erc1967Status {\n address: string\n implementation: string\n proxy: Erc1967DataSlots\n}\n\nconst hexBytesOnlyOnly = (value: string) => {\n return value.startsWith('0x') ? value.substring(2) : value\n}\n\nconst addressFromHex = (value: string) => {\n return `0x${hexBytesOnlyOnly(value).substring(24)}`\n}\n\nconst isHexZero = (value: string) => {\n return new BigNumber(hexBytesOnlyOnly(value), 'hex').eqn(0)\n}\n\nexport const readAddressFromSlot = async (provider: BaseProvider, address: string, slot: string) => {\n const slotValue = await provider.getStorageAt(address, slot)\n return addressFromHex(slotValue)\n}\n\nexport const getErc1967Status = async (provider: BaseProvider, address: string): Promise<Erc1967Status> => {\n const proxy: Erc1967DataSlots = {\n admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT),\n beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT),\n implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT),\n rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT),\n }\n\n if (!isHexZero(proxy.beacon)) {\n const beacon = UpgradeableBeacon__factory.connect(proxy.beacon, provider)\n try {\n proxy.implementation = await beacon.callStatic.implementation()\n } catch (ex) {\n const error = ex as Error\n console.log(error.message)\n }\n }\n\n return {\n address,\n implementation: isHexZero(proxy.implementation) ? address : proxy.implementation,\n proxy,\n }\n}\n","import { BaseProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, WebSocketProvider } from '@ethersproject/providers'\nimport { assertEx } from '@xylabs/assert'\n\nexport type ProviderSource = 'infura' | 'quicknode'\nexport type ProviderType = 'rpc' | 'wss'\n\nconst createInfuraRpc = (chainId: number) => {\n return new InfuraProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n projectSecret: process.env.INFURA_PROJECT_SECRET,\n })\n}\n\nconst createInfuraWss = (chainId: number) => {\n return new InfuraWebSocketProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n })\n}\n\nconst createQuicknodeWss = (chainId: number) => {\n const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI\n return quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : undefined\n}\n\nconst createQuicknodeRpc = (chainId: number) => {\n const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI\n return quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : undefined\n}\n\nexport const getProviderFromEnv = (\n chainId: number = 0x01,\n options?: { providerSource?: ProviderSource; providerType?: ProviderType },\n): BaseProvider => {\n const { providerSource, providerType } = options ?? {}\n let provider: BaseProvider | undefined = undefined\n switch (providerSource) {\n case 'quicknode': {\n switch (providerType) {\n case 'rpc': {\n provider = createQuicknodeRpc(chainId)\n break\n }\n case 'wss':\n default: {\n provider = createQuicknodeWss(chainId)\n break\n }\n }\n break\n }\n default:\n case 'infura': {\n switch (providerType) {\n case 'rpc': {\n provider = createInfuraRpc(chainId)\n break\n }\n case 'wss':\n default: {\n provider = createInfuraWss(chainId)\n break\n }\n }\n break\n }\n }\n if (!provider) {\n provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId)\n }\n return assertEx(provider, `Unable to create provider [${chainId}]: ${options ? JSON.stringify(options) : 'default'}`)\n}\n\nconst providers: Record<string, BaseProvider> = {}\n\nexport const getSharedProviderFromEnv = (\n chainId: number = 0x01,\n options?: { providerSource?: ProviderSource; providerType?: ProviderType },\n): BaseProvider => {\n const key = `${chainId}:${options ? JSON.stringify(options) : 'default'}`\n providers[key] = providers[key] ?? getProviderFromEnv(chainId, options)\n return providers[key]\n}\n","import { BaseProvider } from '@ethersproject/providers'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { AnyObject, WithAdditional } from '@xyo-network/object'\nimport { Payload } from '@xyo-network/payload-model'\nimport { WitnessConfig, WitnessInstance, WitnessModuleEventData, WitnessParams } from '@xyo-network/witness-model'\n\nexport const BlockchainWitnessConfigSchema = 'network.xyo.blockchain.witness'\nexport type BlockchainWitnessConfigSchema = typeof BlockchainWitnessConfigSchema\n\nexport type BlockchainWitnessConfig<TAdditional extends Omit<Payload, 'schema'> | void = void, TSchema extends string | void = void> = WitnessConfig<\n TAdditional & { schema: TSchema extends void ? (TAdditional extends void ? string : BlockchainWitnessConfigSchema) : TSchema }\n>\n\nexport type AdditionalBlockchainWitnessParams = {\n providers: BaseProvider[]\n}\n\nexport type BlockchainWitnessParams<\n TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig,\n TAdditionalParams extends AnyObject | void = void,\n> = WitnessParams<\n TConfig,\n WithAdditional<\n {\n providers: BaseProvider[]\n },\n TAdditionalParams\n >\n>\n\nexport abstract class AbstractBlockchainWitness<\n TParams extends BlockchainWitnessParams = BlockchainWitnessParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<\n WitnessInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractWitness<TParams, TIn, TOut, TEventData> {\n get provider() {\n const { providers } = this.params\n return providers[Date.now() % providers.length] //pick a random provider\n }\n}\n"],"mappings":"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","names":["providers"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/lib/checkIpfsUrl.ts","../../src/lib/getProviderFromEnv.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["export * from './lib'\nexport * from './model'\nexport * from './Witness'\n","/**\n * Returns the equivalent IPFS gateway URL for the supplied URL.\n * @param urlToCheck The URL to check\n * @returns If the supplied URL is an IPFS URL, it converts the URL to the\n * equivalent IPFS gateway URL. Otherwise, returns the original URL.\n */\nexport const checkIpfsUrl = (urlToCheck: string, ipfsGateway: string) => {\n try {\n const url = new URL(urlToCheck)\n let protocol = url.protocol\n let host = url.host\n let path = url.pathname\n const query = url.search\n if (protocol === 'ipfs:') {\n protocol = 'https:'\n host = ipfsGateway\n path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`\n const root = `${protocol}//${host}/${path}`\n return query?.length > 0 ? `${root}?${query}` : root\n } else {\n return urlToCheck\n }\n } catch (ex) {\n const error = ex as Error\n console.error(`${error.name}:${error.message} [${urlToCheck}]`)\n console.log(error.stack)\n return undefined\n }\n}\n","import { BaseProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, WebSocketProvider } from '@ethersproject/providers'\nimport { ConnectionInfo } from '@ethersproject/web'\nimport { assertEx } from '@xylabs/assert'\n\nexport type ProviderSource = 'infura' | 'quicknode'\nexport type ProviderType = 'rpc' | 'wss'\n\nexport interface GetProvidersFromEnvOptions {\n overrides?: Partial<ConnectionInfo>\n providerSource?: ProviderSource\n providerType?: ProviderType\n}\n\nconst enableConfigOverride = false\n\nconst configureConnection = (connection?: ConnectionInfo, { timeout = 1000 }: Partial<ConnectionInfo> = {}) => {\n if (connection && enableConfigOverride) {\n connection.timeout = timeout\n connection.throttleCallback = async (attempt, url) => {\n console.log(`throttleCallback[${attempt}]: ${url}`)\n return await Promise.resolve(true)\n }\n }\n}\n\nconst createInfuraRpc = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const provider =\n process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET\n ? new InfuraProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n projectSecret: process.env.INFURA_PROJECT_SECRET,\n })\n : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nconst createInfuraWss = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const provider = process.env.INFURA_PROJECT_ID\n ? new InfuraWebSocketProvider(chainId, {\n projectId: process.env.INFURA_PROJECT_ID,\n })\n : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nconst createQuicknodeWss = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI\n const provider = quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nconst createQuicknodeRpc = (chainId: number, overrides?: Partial<ConnectionInfo>) => {\n const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI\n const provider = quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : undefined\n configureConnection(provider?.connection, overrides)\n return provider\n}\n\nexport const getProviderFromEnv = (\n chainId: number = 0x01,\n { providerSource = 'infura', providerType = 'rpc', overrides }: GetProvidersFromEnvOptions = {},\n): BaseProvider => {\n let provider: BaseProvider | undefined = undefined\n switch (providerSource) {\n case 'quicknode': {\n switch (providerType) {\n case 'rpc': {\n provider = createQuicknodeRpc(chainId, overrides)\n break\n }\n case 'wss': {\n provider = createQuicknodeWss(chainId, overrides)\n break\n }\n }\n break\n }\n default:\n case 'infura': {\n switch (providerType) {\n case 'wss': {\n provider = createInfuraWss(chainId, overrides)\n break\n }\n case 'rpc': {\n provider = createInfuraRpc(chainId, overrides)\n break\n }\n }\n break\n }\n }\n if (!provider) {\n provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId)\n }\n return assertEx(provider, `Unable to create provider [${chainId}]: ${providerSource}|${providerType}`)\n}\n\nconst providers: Record<string, BaseProvider> = {}\n\nexport const getSharedProviderFromEnv = (\n chainId: number = 0x01,\n options?: { providerSource?: ProviderSource; providerType?: ProviderType },\n): BaseProvider => {\n const key = `${chainId}:${options ? JSON.stringify(options) : 'default'}`\n providers[key] = providers[key] ?? getProviderFromEnv(chainId, options)\n return providers[key]\n}\n\nexport const getProvidersFromEnv = (count: number = 1, chainId: number = 0x01, options: GetProvidersFromEnvOptions = {}): BaseProvider[] => {\n const result: BaseProvider[] = []\n for (let i = 0; i < count; i++) {\n result.push(getProviderFromEnv(chainId, options))\n }\n return result\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const BlockchainAddressSchema = 'network.xyo.blockchain.address'\nexport type BlockchainAddressSchema = typeof BlockchainAddressSchema\n\nexport type BlockchainAddress = Payload<\n {\n address?: string\n blockTag?: string | number\n chainId?: number\n },\n BlockchainAddressSchema\n>\n","import { BaseProvider } from '@ethersproject/providers'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport { AnyObject, WithAdditional } from '@xyo-network/object'\nimport { Payload } from '@xyo-network/payload-model'\nimport { WitnessConfig, WitnessInstance, WitnessModuleEventData, WitnessParams } from '@xyo-network/witness-model'\n\nexport const BlockchainWitnessConfigSchema = 'network.xyo.blockchain.witness'\nexport type BlockchainWitnessConfigSchema = typeof BlockchainWitnessConfigSchema\n\nexport type BlockchainWitnessConfig<TAdditional extends Omit<Payload, 'schema'> | void = void, TSchema extends string | void = void> = WitnessConfig<\n TAdditional & { schema: TSchema extends void ? (TAdditional extends void ? string : BlockchainWitnessConfigSchema) : TSchema }\n>\n\nexport type AdditionalBlockchainWitnessParams = {\n providers: BaseProvider[]\n}\n\nexport type BlockchainWitnessParams<\n TConfig extends BlockchainWitnessConfig = BlockchainWitnessConfig,\n TAdditionalParams extends AnyObject | void = void,\n> = WitnessParams<\n TConfig,\n WithAdditional<\n {\n providers: () => Promisable<BaseProvider[]>\n },\n TAdditionalParams\n >\n>\n\nexport abstract class AbstractBlockchainWitness<\n TParams extends BlockchainWitnessParams = BlockchainWitnessParams,\n TIn extends Payload = Payload,\n TOut extends Payload = Payload,\n TEventData extends WitnessModuleEventData<WitnessInstance<TParams, TIn, TOut>, TIn, TOut> = WitnessModuleEventData<\n WitnessInstance<TParams, TIn, TOut>,\n TIn,\n TOut\n >,\n> extends AbstractWitness<TParams, TIn, TOut, TEventData> {\n private _providers: BaseProvider[] | undefined = undefined\n\n async getProvider(cache?: boolean): Promise<BaseProvider | undefined>\n async getProvider(cache: boolean, error: string | true): Promise<BaseProvider>\n async getProvider(cache = false, error?: string | boolean): Promise<BaseProvider | undefined> {\n const providers = await this.getProviders(cache)\n if (providers.length === 0) {\n if (error) {\n throw Error(typeof error === 'string' ? error : 'No providers available')\n }\n return undefined\n }\n return providers[Date.now() % providers.length] //pick a random provider\n }\n\n async getProviders(cache = false): Promise<BaseProvider[]> {\n const cachedProviders = cache ? this._providers : undefined\n this._providers = cachedProviders ?? (await this.params.providers())\n return this._providers\n }\n}\n"],"mappings":"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","names":["providers"]}
|
package/dist/browser/index.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA"}
|
package/dist/browser/index.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA"}
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA"}
|
package/dist/browser/index.js
CHANGED
|
@@ -23,84 +23,57 @@ var checkIpfsUrl = (urlToCheck, ipfsGateway) => {
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
// src/lib/getErc1967Status.ts
|
|
27
|
-
import { BigNumber } from "@xylabs/bignumber";
|
|
28
|
-
import { UpgradeableBeacon__factory } from "@xyo-network/open-zeppelin-typechain";
|
|
29
|
-
var ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
30
|
-
var ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
31
|
-
var ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
32
|
-
var ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
33
|
-
var hexBytesOnlyOnly = (value) => {
|
|
34
|
-
return value.startsWith("0x") ? value.substring(2) : value;
|
|
35
|
-
};
|
|
36
|
-
var addressFromHex = (value) => {
|
|
37
|
-
return `0x${hexBytesOnlyOnly(value).substring(24)}`;
|
|
38
|
-
};
|
|
39
|
-
var isHexZero = (value) => {
|
|
40
|
-
return new BigNumber(hexBytesOnlyOnly(value), "hex").eqn(0);
|
|
41
|
-
};
|
|
42
|
-
var readAddressFromSlot = async (provider, address, slot) => {
|
|
43
|
-
const slotValue = await provider.getStorageAt(address, slot);
|
|
44
|
-
return addressFromHex(slotValue);
|
|
45
|
-
};
|
|
46
|
-
var getErc1967Status = async (provider, address) => {
|
|
47
|
-
const proxy = {
|
|
48
|
-
admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT),
|
|
49
|
-
beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT),
|
|
50
|
-
implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT),
|
|
51
|
-
rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT)
|
|
52
|
-
};
|
|
53
|
-
if (!isHexZero(proxy.beacon)) {
|
|
54
|
-
const beacon = UpgradeableBeacon__factory.connect(proxy.beacon, provider);
|
|
55
|
-
try {
|
|
56
|
-
proxy.implementation = await beacon.callStatic.implementation();
|
|
57
|
-
} catch (ex) {
|
|
58
|
-
const error = ex;
|
|
59
|
-
console.log(error.message);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
address,
|
|
64
|
-
implementation: isHexZero(proxy.implementation) ? address : proxy.implementation,
|
|
65
|
-
proxy
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
|
|
69
26
|
// src/lib/getProviderFromEnv.ts
|
|
70
27
|
import { InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, WebSocketProvider } from "@ethersproject/providers";
|
|
71
28
|
import { assertEx } from "@xylabs/assert";
|
|
72
|
-
var
|
|
73
|
-
|
|
29
|
+
var enableConfigOverride = false;
|
|
30
|
+
var configureConnection = (connection, { timeout = 1e3 } = {}) => {
|
|
31
|
+
if (connection && enableConfigOverride) {
|
|
32
|
+
connection.timeout = timeout;
|
|
33
|
+
connection.throttleCallback = async (attempt, url) => {
|
|
34
|
+
console.log(`throttleCallback[${attempt}]: ${url}`);
|
|
35
|
+
return await Promise.resolve(true);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var createInfuraRpc = (chainId, overrides) => {
|
|
40
|
+
const provider = process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET ? new InfuraProvider(chainId, {
|
|
74
41
|
projectId: process.env.INFURA_PROJECT_ID,
|
|
75
42
|
projectSecret: process.env.INFURA_PROJECT_SECRET
|
|
76
|
-
});
|
|
43
|
+
}) : void 0;
|
|
44
|
+
configureConnection(provider?.connection, overrides);
|
|
45
|
+
return provider;
|
|
77
46
|
};
|
|
78
|
-
var createInfuraWss = (chainId) => {
|
|
79
|
-
|
|
47
|
+
var createInfuraWss = (chainId, overrides) => {
|
|
48
|
+
const provider = process.env.INFURA_PROJECT_ID ? new InfuraWebSocketProvider(chainId, {
|
|
80
49
|
projectId: process.env.INFURA_PROJECT_ID
|
|
81
|
-
});
|
|
50
|
+
}) : void 0;
|
|
51
|
+
configureConnection(provider?.connection, overrides);
|
|
52
|
+
return provider;
|
|
82
53
|
};
|
|
83
|
-
var createQuicknodeWss = (chainId) => {
|
|
54
|
+
var createQuicknodeWss = (chainId, overrides) => {
|
|
84
55
|
const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI;
|
|
85
|
-
|
|
56
|
+
const provider = quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : void 0;
|
|
57
|
+
configureConnection(provider?.connection, overrides);
|
|
58
|
+
return provider;
|
|
86
59
|
};
|
|
87
|
-
var createQuicknodeRpc = (chainId) => {
|
|
60
|
+
var createQuicknodeRpc = (chainId, overrides) => {
|
|
88
61
|
const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI;
|
|
89
|
-
|
|
62
|
+
const provider = quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : void 0;
|
|
63
|
+
configureConnection(provider?.connection, overrides);
|
|
64
|
+
return provider;
|
|
90
65
|
};
|
|
91
|
-
var getProviderFromEnv = (chainId = 1,
|
|
92
|
-
const { providerSource, providerType } = options ?? {};
|
|
66
|
+
var getProviderFromEnv = (chainId = 1, { providerSource = "infura", providerType = "rpc", overrides } = {}) => {
|
|
93
67
|
let provider = void 0;
|
|
94
68
|
switch (providerSource) {
|
|
95
69
|
case "quicknode": {
|
|
96
70
|
switch (providerType) {
|
|
97
71
|
case "rpc": {
|
|
98
|
-
provider = createQuicknodeRpc(chainId);
|
|
72
|
+
provider = createQuicknodeRpc(chainId, overrides);
|
|
99
73
|
break;
|
|
100
74
|
}
|
|
101
|
-
case "wss":
|
|
102
|
-
|
|
103
|
-
provider = createQuicknodeWss(chainId);
|
|
75
|
+
case "wss": {
|
|
76
|
+
provider = createQuicknodeWss(chainId, overrides);
|
|
104
77
|
break;
|
|
105
78
|
}
|
|
106
79
|
}
|
|
@@ -109,13 +82,12 @@ var getProviderFromEnv = (chainId = 1, options) => {
|
|
|
109
82
|
default:
|
|
110
83
|
case "infura": {
|
|
111
84
|
switch (providerType) {
|
|
112
|
-
case "
|
|
113
|
-
provider =
|
|
85
|
+
case "wss": {
|
|
86
|
+
provider = createInfuraWss(chainId, overrides);
|
|
114
87
|
break;
|
|
115
88
|
}
|
|
116
|
-
case "
|
|
117
|
-
|
|
118
|
-
provider = createInfuraWss(chainId);
|
|
89
|
+
case "rpc": {
|
|
90
|
+
provider = createInfuraRpc(chainId, overrides);
|
|
119
91
|
break;
|
|
120
92
|
}
|
|
121
93
|
}
|
|
@@ -125,7 +97,7 @@ var getProviderFromEnv = (chainId = 1, options) => {
|
|
|
125
97
|
if (!provider) {
|
|
126
98
|
provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId);
|
|
127
99
|
}
|
|
128
|
-
return assertEx(provider, `Unable to create provider [${chainId}]: ${
|
|
100
|
+
return assertEx(provider, `Unable to create provider [${chainId}]: ${providerSource}|${providerType}`);
|
|
129
101
|
};
|
|
130
102
|
var providers = {};
|
|
131
103
|
var getSharedProviderFromEnv = (chainId = 1, options) => {
|
|
@@ -133,27 +105,45 @@ var getSharedProviderFromEnv = (chainId = 1, options) => {
|
|
|
133
105
|
providers[key] = providers[key] ?? getProviderFromEnv(chainId, options);
|
|
134
106
|
return providers[key];
|
|
135
107
|
};
|
|
108
|
+
var getProvidersFromEnv = (count = 1, chainId = 1, options = {}) => {
|
|
109
|
+
const result = [];
|
|
110
|
+
for (let i = 0; i < count; i++) {
|
|
111
|
+
result.push(getProviderFromEnv(chainId, options));
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// src/model.ts
|
|
117
|
+
var BlockchainAddressSchema = "network.xyo.blockchain.address";
|
|
136
118
|
|
|
137
119
|
// src/Witness.ts
|
|
138
120
|
import { AbstractWitness } from "@xyo-network/abstract-witness";
|
|
139
121
|
var BlockchainWitnessConfigSchema = "network.xyo.blockchain.witness";
|
|
140
122
|
var AbstractBlockchainWitness = class extends AbstractWitness {
|
|
141
|
-
|
|
142
|
-
|
|
123
|
+
_providers = void 0;
|
|
124
|
+
async getProvider(cache = false, error) {
|
|
125
|
+
const providers2 = await this.getProviders(cache);
|
|
126
|
+
if (providers2.length === 0) {
|
|
127
|
+
if (error) {
|
|
128
|
+
throw Error(typeof error === "string" ? error : "No providers available");
|
|
129
|
+
}
|
|
130
|
+
return void 0;
|
|
131
|
+
}
|
|
143
132
|
return providers2[Date.now() % providers2.length];
|
|
144
133
|
}
|
|
134
|
+
async getProviders(cache = false) {
|
|
135
|
+
const cachedProviders = cache ? this._providers : void 0;
|
|
136
|
+
this._providers = cachedProviders ?? await this.params.providers();
|
|
137
|
+
return this._providers;
|
|
138
|
+
}
|
|
145
139
|
};
|
|
146
140
|
export {
|
|
147
141
|
AbstractBlockchainWitness,
|
|
142
|
+
BlockchainAddressSchema,
|
|
148
143
|
BlockchainWitnessConfigSchema,
|
|
149
|
-
ERC1967_PROXY_ADMIN_STORAGE_SLOT,
|
|
150
|
-
ERC1967_PROXY_BEACON_STORAGE_SLOT,
|
|
151
|
-
ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT,
|
|
152
|
-
ERC1967_PROXY_ROLLBACK_STORAGE_SLOT,
|
|
153
144
|
checkIpfsUrl,
|
|
154
|
-
getErc1967Status,
|
|
155
145
|
getProviderFromEnv,
|
|
156
|
-
|
|
157
|
-
|
|
146
|
+
getProvidersFromEnv,
|
|
147
|
+
getSharedProviderFromEnv
|
|
158
148
|
};
|
|
159
149
|
//# sourceMappingURL=index.js.map
|