///
import { PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
import { Blob, Layout, UInt, Structure as _Structure, Union as _Union, blob } from './buffer-layout';
export * from './buffer-layout';
export { blob };
export declare class BNLayout
extends Layout {
blob: Layout;
signed: boolean;
constructor(span: number, signed: boolean, property?: P);
/** @override */
decode(b: Buffer, offset?: number): BN;
/** @override */
encode(src: BN, b: Buffer, offset?: number): number;
}
export declare class WideBits extends Layout, P> {
_lower: any;
_upper: any;
constructor(property?: P);
addBoolean(property: string): void;
decode(b: Buffer, offset?: number): Record;
encode(src: any, b: Buffer, offset?: number): any;
}
export declare function u8(property?: P): UInt;
export declare function u32(property?: P): UInt;
export declare function u64(property?: P): BNLayout
;
export declare function u128
(property?: P): BNLayout
;
export declare function i8
(property?: P): BNLayout
;
export declare function i64
(property?: P): BNLayout
;
export declare function i128
(property?: P): BNLayout
;
export declare class WrappedLayout extends Layout {
layout: Layout;
decoder: (data: T) => U;
encoder: (src: U) => T;
constructor(layout: Layout, decoder: (data: T) => U, encoder: (src: U) => T, property?: P);
decode(b: Buffer, offset?: number): U;
encode(src: U, b: Buffer, offset?: number): number;
getSpan(b: Buffer, offset?: number): number;
}
export declare function publicKey(property?: P): Layout;
export declare class OptionLayout extends Layout {
layout: Layout;
discriminator: Layout;
constructor(layout: Layout, property?: P);
encode(src: T | null, b: Buffer, offset?: number): number;
decode(b: Buffer, offset?: number): T | null;
getSpan(b: Buffer, offset?: number): number;
}
export declare function option(layout: Layout, property?: P): Layout;
export declare function bool(property?: P): Layout;
export declare function decodeBool(value: number): boolean;
export declare function encodeBool(value: boolean): number;
export declare function vec(elementLayout: Layout, property?: P): Layout;
export declare function tagged(tag: BN, layout: Layout, property?: P): Layout;
export declare function vecU8(property?: P): Layout;
export declare function str(property?: P): Layout;
export interface EnumLayout extends Layout {
registry: Record>;
}
export declare function rustEnum(variants: Layout[], property?: P): EnumLayout;
export declare function array(elementLayout: Layout, length: number, property?: P): Layout;
export declare class Structure extends _Structure {
/** @override */
decode(b: Buffer, offset?: number): D;
}
export declare function struct(fields: T, property?: P, decodePrefixes?: boolean): T extends Layout[] ? Structure, ''>]: Extract> extends Layout ? V : any;
}> : any;
export type GetLayoutSchemaFromStructure> = T extends Structure ? S : any;
export type GetStructureFromLayoutSchema = Structure;
export declare class Union extends _Union {
encodeInstruction(instruction: any): Buffer;
decodeInstruction(instruction: any): Partial;
}
export declare function union(discr: any, defaultLayout?: any, property?: string): Union;
declare class Zeros extends Blob {
decode(b: Buffer, offset: number): Buffer;
}
export declare function zeros(length: number): Zeros;
export declare function seq(elementLayout: Layout, count: number | BN | Layout, property?: AnotherP): Layout;